【发布时间】:2019-01-18 13:27:07
【问题描述】:
我有一个表,其中有 ID、用户名、地址 1、地址 2、邮政编码、描述等字段。好吧,我想获取所有行,因为结果中 'ID' 不能等于 '$_SESSION ['id']' 和 'add1' 必须等于 'address1' 或 add2 必须等于 'address2'。
我的查询如下:
$res = mysqli_query($con,"
SELECT *
FROM tabledata
WHERE ID !='$_SESSION['id']'
AND address1 = '$add1'
or address2 = '$add2'
ORDER
BY id DESC
LIMIT 5
");
但是这个查询也给了我那个'ID'值等于'$_SESSION['id']'的行。
可能还有其他方法...但我想不通,任何帮助或建议将不胜感激。
【问题讨论】:
-
看起来像operator precedence 问题..
-
您需要在 OR 周围加上括号,如
AND (address1 = '$add1' or address2 = '$add2') ORDER BY。一个好的 SQL 教程将帮助你理解这些事情。 -
我还建议您阅读How can I prevent SQL injection in PHP?,如果@KenWhite 的建议不起作用,建议您阅读Why should I provide an MCVE for what seems to me to be a very simple SQL query? 并提供示例数据..
-
感谢@Raymond Nijland 和@Ken White 的帮助,我感谢你们,它已通过括号修复,我一定会检查您提供的链接。
标签: mysql