【发布时间】:2019-06-23 07:38:12
【问题描述】:
我正在尝试将字符串数组绑定到 where-in 条件。我也使用了参数转换常量。但它似乎不起作用。
以下是我的查询。
$buQuery = "SELECT bu.ID, bu.BUSINESS_NAME FROM business as bu WHERE bu.ID IN (:business)";
$buStmt = self::getConnection($this->entityManager)->prepare($buQuery);
$buStmt->bindValue("business", $business, \Doctrine\DBAL\Connection::PARAM_STR_ARRAY);
$buStmt->execute();
$responseData = $buStmt->fetch();
return $responseData;
我为 in 条件传递的数组是(我已经从参数列表中打印了这个数组并将其复制到这里。)
$business = Array ( 0 => 'mobile', 1 => 'iot' );
教义给我的错误是:
处理时引发异常:执行 SELECT bu.ID, bu.BUSINESS_NAME FROM business as bu WHERE bu.ID IN (:business) 时发生异常,参数为 "[["mobile","iot"]] :"
注意:数组到字符串的转换
我注意到数组没有正确转换。我参考了以下链接,但没有任何帮助。
Stackoverflowlink1Stackoverflowlink2Doctrinelink1
注意:我也使用了“PARAM_INT_ARRAY”。而且我在绑定语句中将数组作为参数传递时尝试了“array_values”。
【问题讨论】:
-
您能否尝试将
:business绑定名称重命名为可能从未使用过的名称,例如:businessBindValue -
@Lunin:值得注意的是。正如我也尝试过的那样。即使我更改绑定值的名称,也会导致相同的错误。
标签: php symfony doctrine-orm symfony-2.1