如果在查询mysqli中不为null

时间:2015-11-21 11:37:19

标签: php mysqli

我有多个字段并从ajax方法发布获取值,我想用这个值过滤表。

我在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并且查询为空! 哪里错了?

2 个答案:

答案 0 :(得分:2)

$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); 是查询执行的结果。 您应该在查询文本中添加子句,而不是查询结果。

adb shell pm path com.test.example

当然 - 不要忘记sql-injection漏洞。

答案 1 :(得分:0)

您正在通过调用$mysqli->query(...)直接执行查询,结果是数据库中找到的所有内容的结果对象。

然后,您将向该结果对象添加字符串。问题是:查询已经执行。在调用query()之前,您必须在查询字符串中添加字符串。