我有一个如下所示的查询:
$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已经通过验证函数进行过滤,因此我知道它们都是整数。
这适用于我的情况,但在使用用户的直接输入时肯定会中断。
除非保证所有数组值都被清理,否则不要使用此方法。