mysql - 如何在 MySQL 查询中为 NOT IN 子句指定命名参数值?

标签 mysql doctrine-orm prepared-statement named-parameters notin

我编写了以下 SQL 查询:

$media_category_ids = array( 11, 12);
$params = array();
$sql = "SELECT `id`
    FROM query
    WHERE 1=1
    AND WHERE query.media_category_id NOT IN (:media_category_ids)";
$params['media_category_ids'] = implode(",",$media_category_ids);
$prepared_query = $c->prepare($sql);
$prepared_query->execute($params);

但是,我似乎无法正确获取“NOT IN”子句中命名参数的语法,因为出现以下错误:

Message: An exception occurred while executing 'SELECT `id` FROM query WHERE 1=1 AND WHERE query.media_category_id NOT IN (:media_category_ids)': 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 'WHERE query.media_category_id NOT IN ('11,2')' at line 4 

如果有人能指出正确的方向,我将不胜感激。

最佳答案

AND 运算符之后删除附加的 WHERE

AND WHERE query.media_category_id  
    ^here 

关于mysql - 如何在 MySQL 查询中为 NOT IN 子句指定命名参数值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21757965/

相关文章:

php - 多行更新或插入mysql

mysql - Symfony2 中通过多个值对数据库中的记录进行排序

mysql - 或者通过 Doctrine2 按不固定数量的关键字进行搜索

php - PHP将PDO对象传递给类

mysql - SQLSTATE[40001] : Serialization failure: 1213 Deadlock issue caused by INSERT trigger on concurrent access

mysql - 使用 DISTINCT 时发生了什么?

mysql - 如何使用准备好的语句防止 C 语言中的 SQL 注入(inject)?

c# - 使用参数化参数 WITH sqlcommandbuilder [无数据适配器]

php - Laravel 获取所有带条件的子节点数

php - 如何在 symfony2 中使用 mongodb Doctrine 选择某些字段