php pdo 条件查询,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']);

有用!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值