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

标签 php mysql pdo

我正在构建一个自动完成下拉框,并且有一个功能性 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"));

我尝试寻找一些引用资料来讨论此消息、为什么会发生以及如何处理它,但它似乎很常见,而且我读到的任何内容都没有包含 Elixir 。谁能看到我的代码中的问题吗?

最佳答案

自从我编写 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"));

关于PHP/PDO SQLSTATE[42000] : Syntax error or access violation: 1064 Nightmare,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32803321/

相关文章:

mysql - 如何在 zend 框架中构造以下查询(左右连接和多重更新)?

php - MySQL/PHP/PDO + 如何为 IN() 子句中的每个(重复)条目获取一行?

php - CakePHP 元素错误处理问题

php - 在 PHP 中使用 DateTime 生成不同的日期字符串

php - Mysql - 查询和索引

php - SELECT DISTINCT 仍然显示重复项

php - 如何防止 MySQL 使用 PDO 更新带有空字符串的列

javascript - 打开新选项卡将删除 Chrome 和 Mozilla 浏览器中的 session ,但不会删除 IE 和 Edge 中的 session

mysql - 删除mariadb后无法安装mysql ubuntu

php - 将数据从一个 mysql 表复制到另一个表时出现内存问题