使用Zend Framework 2准备类型数组的语句参数

时间:2018-03-24 20:56:05

标签: mysql zend-framework2 prepared-statement

我有一个如下所示的查询:

$cleanupQuery = $conn->prepare("
  DELETE FROM tbl_annotations
  WHERE
    id IN (:removedAnnotations)
");

显然,重点是最终得到这种查询

DELETE FROM tbl_annotations WHERE id IN (1, 2, 3, 4)

Zend Framework 2可以实现吗?

如果没有,是否有解决此问题的方法?

更新

尽管有些人决定将此问题视为重复,但我选择了另一种解决方案:FIND_IN_SET()

$cleanupQuery = $conn->prepare("
  DELETE FROM tbl_annotations
  WHERE
    FIND_IN_SET(id, :removedAnnotations)
");

我通过removedAnnotations设置implode(',', $annotationIds)。这些ID已经通过验证函数进行过滤,因此我知道它们都是整数。

这适用于我的情况,但在使用用户的直接输入时肯定会中断。​​

除非保证所有数组值都被清理,否则不要使用此方法。

0 个答案:

没有答案