我有多个字段并从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并且查询为空! 哪里错了?
答案 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()
之前,您必须在查询字符串中添加字符串。