mysql - 使用的 SELECT 语句在 codeigniter 中具有不同的列数

标签 mysql codeigniter

Error Number: 1222
The used SELECT statements have a different number of columns

这是 Controller

    <?php
    class Autocomplete extends CI_Controller{
        function __construct() {
            parent::__construct();
            $this->load->model('datacomplete');
        }

        public function index(){
            $this->load->view('view_demo');
        }
        public function GetCountryName(){
            $keyword=$this->input->post('keyword');
            $data=$this->datacomplete->GetRow($keyword); 

            echo json_encode($data);
        }

    }
    ?>

这是模型

        <?php
    class Datacomplete extends CI_Model{

        public function GetRow($keyword) {        
           $this->db->select('collg_name,city,state,country as type');
           $this->db->from('tbl_college');
           $this->db->like("collg_name",$keyword);
           $this->db->or_like('city',$keyword,'after');
           $this->db->or_like('state',$keyword,'after');
           $this->db->or_like('country',$keyword,'after');
           $query1 = $this->db->get_compiled_select();
           $this->db->select('course_offrd_name,category_name,subcategory_name');
           $this->db->from('tbl_course_offered');
           $this->db->like("course_offrd_name",$keyword);
           $this->db->or_like('category_name',$keyword,'after');
           $this->db->or_like('subcategory_name',$keyword,'after');
           $query2 = $this->db->get_compiled_select();
           $result = $this->db->query($query1." UNION ".$query2);
           return $result->result();
        }
    }

这是 View

    <!DOCTYPE html>
    <html>
        <head>
            <!-- Latest compiled and minified CSS -->
            <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.0/css/bootstrap.min.css">
            <!-- Latest compiled and minified JavaScript -->
            <script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
            <!-- Latest compiled and minified JavaScript -->
            <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.0/js/bootstrap.min.js"></script>
            <script src="<?php echo base_url(); ?>assets/custom.js"></script>
        </head>
        <body style="background-color: #000000;">
            <div class="row">
            <center><h2 style="color: #fff;">AUTOCOMPLETE FORM FROM DATABASE USING CODEIGNITER AND AJAX</h2></center>
                <div class="col-md-4 col-md-offset-4" style="margin-top: 200px;">

                        <label class="control-lable" style="color: #fff;">Country Name</label>
                        <input style="height:70px" type="text" id="country" autocomplete="off" name="country" class="form-control" placeholder="Type to get an Ajax call of Countries">        
                        <ul class="dropdown-menu txtcountry" style="margin-left:15px;margin-right:0px;" role="menu" aria-labelledby="dropdownMenu"  id="DropdownCountry"></ul>
    </div>
            </div>
        </body>
    </html>

    This is custom.js

    $(document).ready(function () {
        $("#country").keyup(function () {
            $.ajax({
                type: "POST",
                url: "http://localhost/codeajax/autocomplete/GetCountryName",
                data: {
                    keyword: $("#country").val()
                },
                dataType: "json",
                success: function (data) {

                    if (data.length > 0) {
                        $('#DropdownCountry').empty();
                        $('#country').attr("data-toggle", "dropdown");
                        $('#DropdownCountry').dropdown('toggle');
                    }
                    else if (data.length == 0) {
                        $('#country').attr("data-toggle", "");
                    }
                    $.each(data, function (key,value) {
                        if (data.length >= 0)
                            $('#DropdownCountry').append('<li role="displayCountries" ><a role="menuitem dropdownCountryli" class="dropdownlivalue">' + value['name'] + '</a></li>');
                    });
                }
            });
        });
        $('ul.txtcountry').on('click', 'li a', function () {
            $('#country').val($(this).text());
        });
    });

我在这里尝试使用 codeigniter 和 ajax 从三个表中搜索关键字。
我在 model

中遇到了这个错误

我该如何解决这个问题?

此外,如果问题得到解决,我的搜索是否会从数据库中获取数据。 代码有什么问题?

最佳答案

您必须在 select 语句中使用相同的列号,如下所示

首先选择您使用 4 列:

$this->db->select('collg_name,city,state,country as type');


second select you use 3 columns : 


$this->db->select('course_offrd_name,category_name,subcategory_name');


class Datacomplete extends CI_Model{

    public function GetRow($keyword) {        
       $this->db->select('collg_name,city,state,country as type');
       $this->db->from('tbl_college');
       $this->db->like("collg_name",$keyword);
       $this->db->or_like('city',$keyword,'after');
       $this->db->or_like('state',$keyword,'after');
       $this->db->or_like('country',$keyword,'after');
       $query1 = $this->db->get_compiled_select();
       $this->db->select('course_offrd_name,category_name,subcategory_name, null as type');
       $this->db->from('tbl_course_offered');
       $this->db->like("course_offrd_name",$keyword);
       $this->db->or_like('category_name',$keyword,'after');
       $this->db->or_like('subcategory_name',$keyword,'after');
       $query2 = $this->db->get_compiled_select();
       $result = $this->db->query($query1." UNION ".$query2);
       return $result->result();
    }
}

关于mysql - 使用的 SELECT 语句在 codeigniter 中具有不同的列数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55413307/

相关文章:

mysql - 如何在mysql中按id排除每个组中的最后一行?

php - CodeIgniter 不同的功能不起作用

javascript - Codeigniter 根据所选日期从数据库中填充下拉值

javascript - Laravel 5.7 从 DB : JS not recognizing the route 自动完成搜索

python - 调用三个表插入数据。 (sqlite3/python)

mysql - Cloud SQL 比本地主机服务器稍慢

mysql - 多个 MySQL 数据库连接的优点和缺点

php - Codeigniter 成本函数 - 没有错误但不计算

php - MariaDB 使用错误的主机,无法连接 php 应用程序

codeigniter - 哪个 CMS 会更好地在 CI 的不同页面中加载不同的模板?