2016-06-11 101 views
0

我的网页上有一个网格视图。网格从我的数据库中填充。我在脚本中建立了一个搜索,所以当我输入number,nameprice时,我得到了正确的数据。Gridview搜索在添加WHERE语句后停止工作

我的SQL查询来获取信息如下:

$sql = "SELECT id, name, price FROM employees"; 

现在我想延长我的脚本和特定用户的相关信息。但是,当我添加一个WHERE语句来我的SQL查询,搜索功能停止工作

这是SQL查询,我需要:

$sql = "SELECT id, name, price FROM employees WHERE user_id='1'"; 

我不知道什么是错。此查询向我显示正确的数据,但搜索功能停止工作。我也在phpMyAdmin中试过这个SQL查询,并且没有任何问题。

有人可以帮我解决这个问题。我真的不知道什么是错的:

这是我用来从我的数据库中获取信息的脚本。 SQL查询是24行: - response.php -

<?php 
include_once("connection.php"); 

$params = $columns = $totalRecords = $data = array(); 

$params = $_REQUEST; 

$columns = array( 
0 =>'id', 
1 =>'name', 
2 => 'price', 
3 => 'user_id' 
); 

$where = $sqlTot = $sqlRec = ""; 

if(!empty($params['search']['value'])) { 
    $where .=" WHERE "; 
    $where .=" (id LIKE '".$params['search']['value']."%' ";  
    $where .=" OR name LIKE '".$params['search']['value']."%' "; 
    $where .=" OR price LIKE '".$params['search']['value']."%')"; 
} 

$sql = "SELECT id, name, price FROM employees WHERE user_id='1'"; 
$sqlTot .= $sql; 
$sqlRec .= $sql; 
if(isset($where) && $where != '') { 
    $sqlTot .= $where; 
    $sqlRec .= $where; 
} 

$sqlRec .= " ORDER BY ". $columns[$params['order'][0]['column']]." ".$params['order'][0]['dir']." LIMIT ".$params['start']." ,".$params['length']." "; 

$queryTot = mysqli_query($conn, $sqlTot) or die("database error:". mysqli_error($conn)); 

$totalRecords = mysqli_num_rows($queryTot); 

$queryRecords = mysqli_query($conn, $sqlRec) or die("error to fetch employees data"); 

while($row = mysqli_fetch_row($queryRecords)) { 
    $data[] = $row; 
} 

$json_data = array(
"draw"   => intval($params['draw']), 
"recordsTotal" => intval($totalRecords), 
"recordsFiltered" => intval($totalRecords), 
"data"   => $data 
); 

echo json_encode($json_data); 
?> 

编辑1:

现在我有:

if(!empty($params['search']['value'])) { 
    $where .=" WHERE "; 
    $where .=" (id LIKE '".$params['search']['value']."%' ";  
    $where .=" OR name LIKE '".$params['search']['value']."%' "; 
    $where .=" OR price LIKE '".$params['search']['value']."%') AND user_id='1' 

$sql = "SELECT id,name,price FROM customers"; 

当我跑,我得到没有user_id='1'的网格视图和user_id='1'的搜索功能。他们都需要user_id='1'

+0

http://php.net/manual/en /mysqli.error.php和var_dump查询,你会看到这里发生了什么。看到你正在使用错误检查,你得到了什么错误? –

+0

我是否需要创建'$ sql'的'var_dump'? 'var_dump($ sql);' – John

+0

@ Fred-ii-我没有得到任何错误。 – John

回答

0

如果$ params为不为空,你有两个地方在SQL这是错误的

if(!empty($params['search']['value'])) { 
    $where .=" WHERE "; 
    $where .=" (id LIKE '".$params['search']['value']."%' ";  
    $where .=" OR name LIKE '".$params['search']['value']."%' "; 
    $where .=" OR price LIKE '".$params['search']['value']."%')"; 
} 

    $sql = "SELECT id, name, price FROM employees WHERE user_id='1'"; 

...... 
// here you assign the firts where by $sql 
$sqlTot .= $sql; 
// here you assign the second where by eval $param 
if(isset($where) && $where != '') { 
$sqlTot .= $where; 
$sqlRec .= $where; 
} 

我suggestio syou应该使用这个设置

if(!empty($params['search']['value'])) { 
    $where .=" WHERE "; 
    $where .=" (id LIKE '".$params['search']['value']."%' ";  
    $where .=" OR name LIKE '".$params['search']['value']."%' "; 
    $where .=" OR price LIKE '".$params['search']['value']."%') "; 

} 
if (!empty($where)) { 

    $where .= "AND user_id='1' "; 
} else { 
    $where .= "WHERE user_id='1' "; 
} 


$sql = "SELECT id,name,price FROM customers"; 
+0

这应该不重要。 MySQL会弥补它。 –

+0

@ Fred-ii-我经历过并不总是这么发生......我建议这个..在$ sql条纹传递查询 – scaisEdge

+0

explecially我的猜测是他们需要摆脱'WHERE user_id ='1''完全是最可能会出错。他们的查询有点混乱。 –