我知道这很简单,但真的很烦人,
为什么这样做:
$query = $pdo->prepare('SELECT index FROM active_notifications WHERE direction = ">"');
这有效:
$query = $pdo->prepare('SELECT trigger_price FROM active_notifications WHERE direction = ">"');
但是这不会!:
$query = $pdo->prepare('SELECT trigger_price, index FROM active_notifications WHERE direction = ">"');
我得到了这个垃圾:
无法连接到数据库。原因:异常'PDOException',消息'SQLSTATE [42000]:语法错误或访问冲突:1064您的SQL语法出错;
答案 0 :(得分:2)
您不应该使用像'index'这样的保留字作为列(或表,模式或需要标识符的任何内容)的名称。
很可能,您的数据库能够从第一个语句的上下文推断出'index'作为列的名称,但选择多个列会导致它不明确。
无论如何,这不是真正的问题。您不希望使用像'index'这样的保留字作为标识符,否则会发生奇怪的事情。尝试更改列的名称。
答案 1 :(得分:0)
您可以通过在SQL语句中使用`转义它们来引用MySQL保留字,即:
SELECT trigger_price,
`index`
FROM active_notifications
WHERE direction = ">"
阅读MySQL docs了解更多信息。