2012-01-26 98 views
3

我不断收到此错误:为什么我的SQL不能工作?

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 ''food' ORDER BY 'id'' at line 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(); 
} 
?> 
+5

看起来像单引号 – Joe 2012-01-26 22:18:31

+0

表名和字段名称不应包含在单引号中。 – dasblinkenlight 2012-01-26 22:20:11

回答

6

如果你想在一个查询到MySQL,you need to use backticks,不撇号逃脱表/列名。撇号用于表示string literals

取而代之的是:

SELECT * FROM 'food' ORDER BY 'id' 

你这样做:

SELECT * FROM `food` ORDER BY `id` 

但是,事实上,这是唯一的要求,同时也是MySQL的关键字标识转义序列,或否则会混淆解析器。您所显示的查询可以在没有它们的情况下编写。

3

不使用引号。使用反引号。 `

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

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

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

1

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

1

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

为了命名带有区分大小写的名称的对象,名称内部的特殊字符与关键字冲突的名称等,通常使用双引号("...")。具体来说,MySQL在这个角色中接受反引号``

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

0

对不起......从现在开始看不到您的代码。

连接起来了吗?如果是,请尝试删除',并请检查列“ID”是否真的存在。