簡體   English   中英

使用WHERE分隔符選擇多個列時出現MySQL語法錯誤?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM