我有多个字段,从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()
之前,您必须将字符串添加到查询字符串中。