[英]MySQL syntax error in selecting multiple columns with the WHERE delimiter?
我有一個相當簡單的查詢來使用我的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
必須是雙引號,而不是單引號。
順便說一句,小心這類事情,因為它使SQL注入攻擊變得非常容易。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.