2015-11-21 42 views
-1

我有多個字段,並從ajax方法後獲取值,我想過濾表與這個值。如果不是空查詢mysqli

我在page.php文件查詢:

$status=$_POST['status']; 
$pname=$_POST['pname']; 

$qr1 = $mysqli->query(
    "SELECT id,uid,status,pname 
    FROM `tbl1`,`tbl2` 
    WHERE `id` IS NOT NULL AND `uid`=21 " 
); 

if(!is_null($_POST['status'])) { 
    $qr1 .= (" AND `status` = '$status' "); 
} 

if(!is_null($_POST['pname'])) { 
    $qr1 .= (" AND `product_name`='$pname' "); 
} 

$row1=$qr1->fetch_object(); 

但返回null,查詢是空的! 我在哪裏錯了?

+0

爲什麼不使用參數,而已經使用mysqli? –

+0

請閱讀一些文檔:http://www.w3schools.com/php/func_mysqli_query.asp(你將能夠快速理解) –

回答

2

$qr1是查詢執行的結果。 您應該添加子句來查詢文本,而不是查詢結果。

$q = "SELECT id,uid,status,pname 
FROM `tbl1`,`tbl2` 
WHERE `id` IS NOT NULL AND `uid`=21"; 
if(!is_null($_POST['status'])) { 
    $q .= (" AND `status` = '$status' "); 
} 
if(!is_null($_POST['pname'])) { 
    $q .= (" AND `product_name`='$pname' "); 
} 
$qr1 = $mysqli->query($q); 

當然 - 不要忘記sql注入漏洞。

+0

當一個字段爲空查詢返回空,我想當一個或多個字段編輯查詢返回值! –

0

您正在通過調用$mysqli->query(...)直接執行查詢,結果是數據庫中找到的所有內容的結果對象。

然後,您將字符串添加到該結果對象。問題是:查詢已經被執行。在調用query()之前,必須將字符串添加到查詢字符串中。