【发布时间】:2011-01-23 07:59:34
【问题描述】:
我正在修改一些 PHP 代码以使用 PDO 进行数据库访问,但我遇到了“WHERE...IN”查询的问题。
我正在尝试从数据库中删除一些东西,这取决于检查了表单上的哪些项目。列表的长度和内容会有所不同,但对于这个例子,想象一下是这样的:
$idlist = '260,201,221,216,217,169,210,212,213';
那么查询是这样的:
$query = "DELETE from `foo` WHERE `id` IN (:idlist)";
$st = $db->prepare($query);
$st->execute(array(':idlist' => $idlist));
当我这样做时,只会删除第一个 ID。 (我认为它会抛出逗号及其后面的所有内容。)
我也尝试过将$idlist 设为一个数组,但它并没有删除任何内容。
在 PDO 准备好的语句中使用项目列表的正确方法是什么?
【问题讨论】:
-
您不得在问题中添加解决方案。如果您认为答案更好,请回答您自己的问题或建议对原始答案进行修改。
-
@PhoneixS 很好的建议,但我最后一次接触这个问题是在 2010 年,从那年开始就没有真正使用过 PHP。如果您愿意,请随意编辑。