if在查询mysqli中不为null



我有多个字段,从ajax方法post中获取值,我想用这些值过滤表。

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

$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注入漏洞。

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

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

最新更新