php - MySQL 'AND' 给我错误

标签 php mysql select

<分区>

我有这个 MySQL 查询:

$querynotis = "SELECT * FROM notifications WHERE pid = " . $_SESSION['sess_id'] . " AND read = 0";

它给了我错误;

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'read = 0' at line 1

如果我删除:

AND read = 0

部分,它工作得很好。我可能做错了什么?

最佳答案

READ 是保留关键字,恰好是您的列的名称。为了避免语法错误,应使用反引号对列名进行转义。例如,

$pid = $_SESSION['sess_id'];
$querynotis = "SELECT * FROM notifications WHERE pid = $pid AND `read` = 0";

另一种方式,而不是用反引号转义:

$pid = $_SESSION['sess_id'];
$querynotis = "SELECT * FROM notifications n WHERE pid = $pid AND n.read = 0";

如果您有权更改表,请更改不在保留关键字列表中的列名称,以防止将来再次出现相同的错误。


作为旁注,查询易受 SQL Injection 攻击如果变量的值(s) 来自外部。请查看下面的文章,了解如何预防它。通过使用 PreparedStatements,您可以摆脱在值周围使用单引号。

关于php - MySQL 'AND' 给我错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16499237/

相关文章:

php - 将 CSV 解析为数组并在该数组中搜索值

php - 如何更改默认错误消息代码

SQL选择一个表中的所有列和另一个表中另一列的最大值

php - 如何修复 PHP amqp?

php - 检索所有用户(userId 和用户名)

mysql - id 没有正确递增

PHP/MySQL 与 CSV 数组连接

javascript - jQuery 多选提交顺序错误

mysql - MySQL中选定值的逗号分隔字符串

php - 在表单上提交发送电子邮件+打开弹出窗口