为什么我的SQL不起作用?

时间:2012-01-26 22:16:59

标签: php mysql

我一直收到这个错误:

  

您的SQL语法有错误;检查手册   对应于您的MySQL服务器版本,以便使用正确的语法   靠近''food'ORDER BY'id''在第1行

我该如何解决?

<?php
require '113-connect-db.php';  
$query = "SELECT * FROM 'food' ORDER BY 'id'";

if ($query_run = mysql_query($query)){
echo 'query successful';

} else {
echo mysql_error();
}
?>

6 个答案:

答案 0 :(得分:6)

如果要将查询中的表/列名称转义为MySQL,you need to use backticks,而不是撇号。撇号用于表示string literals

而不是:

SELECT * FROM 'food' ORDER BY 'id'

你会用这个:

SELECT * FROM `food` ORDER BY `id`

但是,事实上,这是一个转义序列,只有那些也是MySQL keywords 的标识符才需要,否则会混淆解析器。您显示的查询可以在没有它们的情况下编写。

答案 1 :(得分:3)

不使用

引号。使用反引号。 `

表名和列名不需要反引号,只要它们不是关键字。

$query = "SELECT * FROM food ORDER BY id";

答案 2 :(得分:1)

在表名周围使用反引号(`)而不是单引号。

答案 3 :(得分:1)

在order by子句中删除表名和列名周围的单引号!

答案 4 :(得分:1)

单引号('...')表示SQL中的文字字符串,类型为char的字符序列。

要使用区分大小写的名称命名对象,使用名称关键字冲突名称等内部的特殊字符,通常使用双引号("...")。具体而言,MySQL接受此角色中的反引号``

显然,您无法从字符串中进行选择。

答案 5 :(得分:0)

抱歉......从现在开始看不到你的代码。

你的联系好吗?如果是,请尝试删除'并请检查列“id”是否确实存在。

相关问题