我有一个相当简单的查询工作与我的ajax应用程序,但它给出了以下错误:
你的SQL语法有错误;查看与MySQL服务器版本对应的手册,了解在第1行'desc, price FROM products WHERE id='asfasfasf1'附近使用的正确语法
我被这个绊倒了,因为我根本看不到语法错误:
echo json_encode($this->query("SELECT name, desc, price FROM products WHERE id='".$id."';"), JSON_FORCE_OBJECT);
query()如下所示:
function query($query){
$link = mysql_connect($this->host, $this->username, $this->password);
$connected = mysql_select_db($this->database, $link);
if(!$connected){
die("Error: selecting database.");
}
$q = mysql_query($query);
if(!$q){
return "Error: ".mysql_error();
}
$result = mysql_fetch_assoc($q);
return $result;
}
当然,这是在对象内部,但不应该与它有任何关系。所有字段都是正确的,数据库可以连接,因为query()与其他代码一起多次使用并且工作良好。请帮助。
desc
是SQL中的关键字(按降序排序)。如果要使用它作为列名,请尝试引用它:
$this->query("SELECT name, `desc`, price FROM products WHERE id='".$id."';")
请参阅MySQL手册中关于保留字的一个几乎相同的例子,以及如何处理关键字的更多细节。
或者您可以将列重命名为"description"。虽然引用是"正确的"解决方案,但如果可以的话,避免使用保留字作为列名通常是有帮助的。
很有可能id
必须在双引号中,而不是单引号。