当前位置:   article > 正文

php pdo 条件查询,php – PDO与“WHERE … IN”查询

php pdo使用where in

我正在重做一些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准备语句中使用项目列表的正确方法是什么?

edorian的回答为我工作,但我以为我会详细说一下。

首先,每个复选框名称都表示它是数组的一部分:

所以在提交时,我得到一个名为$ _POST [‘foos’]的变量,它是所有复选框的值的数组。

然后我可以这样做:

//As many question marks as array entries; the last one needs no comma

$questionmarks = str_repeat("?,", count($_POST['foos'])-1) . "?";

$query = "DELETE from `employee_customeraccount` WHERE `id` IN ($questionmarks)";

$st = $db->prepare($query);

//Each question mark is filled in with the next item in the array

$st->execute($_POST['foos']);

有用!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/139372
推荐阅读
相关标签
  

闽ICP备14008679号