在CI中设计应用程序并遇到了这个奇怪的问题。下面是模态
public function _get_datatables_query()
{
$sql = "select inv2.id,inv1.uniqueid,inv2.pastamount_due, c.name
FROM invoices as inv2
JOIN (SELECT max(id) as maxid, uniqueid from invoices GROUP by uniqueid)
as inv1 on (inv2.id=inv1.maxid and inv2.uniqueid=inv1.uniqueid)
JOIN client as c ON inv2.uniqueid = c.uniqueid";
$query = $this->db->query($sql);
if($query !== false)
{
return $query->result();
}
return NULL; //$query is false. Probably due to bad syntax in the query string
$i = 0;
// var_dump($this->column_search );
foreach ($this->column_search 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. query 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_search) - 1 == $i) //last loop
$this->db->group_end(); //close bracket
}
$i++;
}
if(isset($_POST['order'])) // here order processing
{
$this->db->order_by($this->column_order[$_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)]);
}
}
function get_datatables()
{
$this->_get_datatables_query();
if($_POST['length'] != -1)
$this->db->limit($_POST['length'], $_POST['start']);
$query = $this->db->get();
return $query->result();
}
下面是控制器公共函数 ajax_list(( {
$list = $this->client->get_datatables();
$data = array();
$no = $_POST['start'];
foreach ($list as $client) {
$no++;
$row = array();
$client=(array)$client;
$row[] = isset($client['name'])?$client['name']:"---";
$row[] = isset($client['city'])?$client['city']:"---";
$row[] = isset($client['amount_due'])?"Rs.".$client['amount_due']:"Rs.00.00";
$row[] = isset($client['lastdispatch'])?$client['lastdispatch']:"---";
$row[] = isset($client['lastbill'])?$client['lastbill']:"--";
$row[] = isset($client['lastpayment'])?$client['lastpayment']:"---";
}
$output = array(
"draw" => $_POST['draw'],
//"recordsTotal" => $this->person->count_all(),
//"recordsFiltered" => $this->person->count_filtered(),
"recordsTotal" => $this->client->count_all(),
"recordsFiltered" => $this->client->count_filtered(),
"data" => $data,
);
//output to json format
echo json_encode($output);
}
在编译应用程序时,我发现错误 1096:未使用表。选择 * 限制 10。我不确定我哪里出错了,因为我没有使用 get(( 返回查询结果。有人可以帮忙!!
从函数 get_datatables(( 中删除这些行:
$query = $this->db->get();
return $query->result();
您正在插入数据库,然后您正在使用get()
运行空查询
此处链接获取帮助