php– 数据表连接表搜索和命令与codeigniter

php– 数据表连接表搜索和命令与codeigniter,第1张

概述我遵循this步骤学习使用codeigniter的数据表.但是我加入两个表时遇到了一些错误在数据表中使用搜索.这是我的错误,然后正如我在documentation AJAX错误中看到的那样,解决方案是在网络请求浏览器中搜索错误服务器.而且我得到500内部服务器错误.这是我复制了故障的响应体. Error Number: 42000/1064 Y

我遵循this步骤学习使用codeigniter的数据表.但是我加入两个表

时遇到了一些错误
在数据表中使用搜索.这是我的错误,

然后正如我在documentation AJAX错误中看到的那样,解决方案是在网络请求浏览器中搜索错误服务器.而且我得到500内部服务器错误.这是我复制了故障的响应体.

Error Number: 42000/1064

You have an error in your sql Syntax; check the manual that corresponds to >your MysqL server version for the right Syntax to use near ‘as >nm_propinsi liKE ‘%c%’ ESCAPE ‘!’ ) ORDER BY ID_kota DESC liMIT 10′ at line 7

SELECT * FROM `kota` as `k` left JOIN `propinsi` as `p` ON `p`.`ID_propinsi` = `k`.`ID_propinsi` WHERE ( `k`.`ID_kota` liKE '%c%' ESCAPE '!' OR `k`.`nm_kota` liKE '%c%' ESCAPE '!' OR `p`.`nm_propinsi` as `nm_propinsi` liKE '%c%' ESCAPE '!' ) ORDER BY `ID_kota` DESC liMIT 10

我的查询出现的错误是通过liKE获取数据表的列表数据.

这是我为数据表创建查询搜索的模型,

var $column = array('k.ID_kota','k.nm_kota','p.nm_propinsi as nm_propinsi'); //set column fIEld database for order and searchvar $order = array('ID_kota' => 'desc'); // default order function get_datatables(){  $this->_get_datatables_@R_403_5962@();  if($_POST['length'] != -1)  $this->db->limit($_POST['length'],$_POST['start']);  $@R_403_5962@ = $this->db->get();  return $@R_403_5962@->result();}private function _get_datatables_@R_403_5962@(){  $this->db->from('kota as k');  $this->db->join('propinsi as p','p.ID_propinsi = k.ID_propinsi');  $i = 0;  foreach ($this->column as $item) // loop column   {     if($_POST['search']['value']) // if datatable send POST for search     {        if($i===0) // first loop        {           $this->db->group_start(); // open bracket. @R_403_5962@ Where with OR clause better with bracket. because maybe can combine with other WHERE with AND.            $this->db->like($item,$_POST['search']['value']);        }        else        {           $this->db->or_like($item,$_POST['search']['value']);        }        if(count($this->column) - 1 == $i) //last loop           $this->db->group_end(); //close bracket     }     $column[$i] = $item; // set column array variable to order processing     $i++;  }  if(isset($_POST['order'])) // here order processing  {     $this->db->order_by($column[$_POST['order']['0']['column']],$_POST['order']['0']['dir']);  }   else if(isset($this->order))  {     $order = $this->order;     $this->db->order_by(key($order),$order[key($order)]);  }}

我的函数控制器获取AJAX JsON,

public function List_kota(){    $this->load->model("kota_model");    $List = $this->kota_model->get_datatables();    $data = array();    $no = $_POST['start'];    foreach ($List as $ko) {        $no++;        $row = array();        $row[] = $ko->ID_kota;        $row[] = $ko->nm_kota;        $row[] = $ko->nm_propinsi;        //add HTML for action        $row[] = 'href="JavaScript:voID()" title="Edit" onclick="edit_kota('."'".$ko->ID_kota."'".')">

我现在应该怎么做?有什么建议吗?最佳答案根据您的模型,您可以像下面一样修改它

private function _get_datatables_@R_403_5962@($term=''){ //term is value of $_REQUEST['search']['value']    $column = array('k.ID_kota','p.nm_propinsi');    $this->db->select('k.ID_kota,k.nm_kota,p.nm_propinsi');    $this->db->from('kota as k');    $this->db->join('propinsi as p','p.ID_propinsi = k.ID_propinsi','left');    $this->db->like('k.ID_kota',$term);    $this->db->or_like('k.nm_kota',$term);    $this->db->or_like('p.nm_propinsi',$term);    if(isset($_REQUEST['order'])) // here order processing    {       $this->db->order_by($column[$_REQUEST['order']['0']['column']],$_REQUEST['order']['0']['dir']);    }     else if(isset($this->order))    {       $order = $this->order;       $this->db->order_by(key($order),$order[key($order)]);    }}function get_datatables(){  $term = $_REQUEST['search']['value'];     $this->_get_datatables_@R_403_5962@($term);  if($_REQUEST['length'] != -1)  $this->db->limit($_REQUEST['length'],$_REQUEST['start']);  $@R_403_5962@ = $this->db->get();  return $@R_403_5962@->result(); }function count_filtered(){  $term = $_REQUEST['search']['value'];   $this->_get_datatables_@R_403_5962@($term);  $@R_403_5962@ = $this->db->get();  return $@R_403_5962@->num_rows();  }public function count_all(){  $this->db->from($this->table);  return $this->db->count_all_results();  }
总结

以上是内存溢出为你收集整理的php – 数据表连接表搜索和命令与codeigniter全部内容,希望文章能够帮你解决php – 数据表连接表搜索和命令与codeigniter所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/1168314.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-01
下一篇2022-06-01

发表评论

登录后才能评论

评论列表(0条)