基本SQL语法,MAMP,PHP& MySQL的

时间:2013-10-08 15:48:46

标签: php mysql sql mamp

我知道这很简单,但真的很烦人,

为什么这样做:

    $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语法出错;

2 个答案:

答案 0 :(得分:2)

您不应该使用像'index'这样的保留字作为列(或表,模式或需要标识符的任何内容)的名称。

很可能,您的数据库能够从第一个语句的上下文推断出'index'作为列的名称,但选择多个列会导致它不明确。

无论如何,这不是真正的问题。您不希望使用像'index'这样的保留字作为标识符,否则会发生奇怪的事情。尝试更改列的名称。

答案 1 :(得分:0)

您可以通过在SQL语句中使用`转义它们来引用MySQL保留字,即:

SELECT trigger_price, 
`index`
FROM active_notifications 
WHERE direction = ">"

阅读MySQL docs了解更多信息。