首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何解决MySQL中PHP PDO的问题?

如何解决MySQL中PHP PDO的问题?
EN

Stack Overflow用户
提问于 2018-07-25 06:31:33
回答 1查看 0关注 0票数 0

我想写一个MySQL语句,如下所示:

SELECT * FROM someTable WHERE someId IN (value1, value2, value3, ...)

但我不知道IN()中有多少值,我知道我可以使用字符串操作在执行过程中生成查询,但是由于这将在一个循环中运行,我想知道是否可以使用PDOPreparedStatement来实现它。

例如:

$query = $PDO->prepare('SELECT * FROM someTable WHERE someId IN (:idList)');
$query->bindValue(':idList', implode(',', $idArray));

这有可能吗?

EN

回答 1

Stack Overflow用户

发布于 2018-07-25 16:17:17

这个方法是不可行的,对于要传入的每个参数,必须有一个单独的占位符,其他一切都不符合参数的用途都是不行的

$ids = array(2, 4, 6, 8);

// prepare a string that contains ":id_0,..,:id_n" and include it in the SQL
$plist = ':id_'.implode(',:id_', array_keys($ids));
$sql   = "SELECT * FROM someTable WHERE someId IN ($plist)";
// prepare & execute the actual statement
$parms = array_combine(explode(",", $plist), $ids);
$stmt  = $PDO->prepare($sql);
$rows  = $stmt->execute($parms);

如果允许在绑定期间将值数组传递给单个参数,则可以有效地更改SQL语句。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100000414

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档