簡體   English   中英

PHP / PDO SQLSTATE [42000]:語法錯誤或訪問沖突:1064噩夢

[英]PHP/PDO SQLSTATE[42000]: Syntax error or access violation: 1064 Nightmare

我正在構建一個自動完成下拉框,並且我有一個功能強大的SQL調用,該調用將找到我要搜索的內容,但是當我嘗試將其集成到正確的PDO語句中時,我不會搖晃此錯誤消息:

Fatal error:  Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 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 'AND city LIKE CONCAT('van', '%') ORDER BY display_value' at line 1' in /home/asdf/index-ajax.php:61
Stack trace:
#0 /home/asdf/index-ajax.php(61): PDOStatement->execute(Array)
#1 {main}
  thrown in /home/asdf/index-ajax.php on line 61

這是我的代碼:

$qry = $CFG["DBH"]->prepare("SELECT DISTINCT CONCAT( city,  ', ', prov_stat,  ', ', country ) AS display_value FROM `contact` AND city LIKE CONCAT('%', :contactCity, '%') ORDER BY display_value;");
$qry->execute(array(':contactCity' => "van"));

我嘗試過查找有關此消息,為什么發生此消息以及如何處理此消息的引用,但它看起來很常見,而且我所能閱讀的內容都沒有包含魔術子彈。 誰能在我的代碼中看到問題?

自從我編寫SQL以來已經有一段時間了,但是您的列列表似乎有些偏離:

$qry = $CFG["DBH"]->prepare("SELECT DISTINCT CONCAT( city,  ', ', prov_stat,  ', ', country ) AS display_value FROM `contact` AND city LIKE CONCAT('%', :contactCity, '%') ORDER BY display_value;");
$qry->execute(array(':contactCity' => "van"));

我不認為你可以加入兩列一起AND ,尤其是不是你所選擇的表之后 另外,據我所知,您不能直接在SELECT過濾查詢( WHERE )。

這樣的事情可能會起作用:

$qry = $CFG["DBH"]->prepare(
    "SELECT DISTINCT
        CONCAT( city,  ', ', prov_stat,  ', ', country ) AS display_value,
        city
     FROM `contact`
     WHERE city LIKE CONCAT('%', :contactCity, '%')
     ORDER BY display_value;"
);

$qry->execute(array(':contactCity' => "van"));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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