首页  >  文章  >  后端开发  >  如何在 PDO 准备语句中使用“WHERE...IN”删除多个项目?

如何在 PDO 准备语句中使用“WHERE...IN”删除多个项目?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-10-31 22:34:02578浏览

How to Delete Multiple Items with `WHERE... IN` in PDO Prepared Statements?

带有“WHERE...IN”子句的 PDO 查询

在 PDO 查询中使用“WHERE...IN”子句时,开发人员经常遇到导致仅删除列表中第一项的问题。出现这种情况是由于准备好的语句中混合值(数字)与控制流逻辑(逗号)不兼容。要解决此问题,列表中的每个值都需要自己的占位符。

解决方案:

  1. 将值分隔到数组中,例如:
$idlist = array('260','201','221','216','217','169','210','212','213');
  1. 构造一串问号,代表每个值的占位符,并用逗号分隔它们,例如:
$questionmarks = str_repeat("?,", count($idlist)-1) . "?";
  1. 准备查询用问号作为“IN”子句参数,例如:
$stmt = $dbh->prepare("DELETE FROM `foo` WHERE `id` IN ($questionmarks)");
  1. 迭代 $idlist 数组并将每个值绑定到占位符,例如:
foreach ($idlist as $id) {
  $stmt->bindParam($i, $id);
  $i++; 
}

准备好语句并绑定参数后,执行查询将成功删除 $idlist 数组中指定的所有项目。

以上是如何在 PDO 准备语句中使用“WHERE...IN”删除多个项目?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn