
我遵循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_propinsiliKE ‘%c%’ ESCAPE ‘!’ ) ORDER BYID_kotaDESC 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所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)