【发布时间】:2010-10-20 20:24:24
【问题描述】:
我正在使用准备好的语句将一些旧代码移动到新的 msqli 接口,我遇到了包含 IN 子句的 SQL 语句的问题。我通常会这样做:
$ids = '123,535,345,567,878'
$sql = "SELECT * FROM table WHERE id IN ($ids)";
$res = mysql_query($sql);
将此转换为 mysqli 和准备好的语句我尝试了多种解决方案:
$ids = '123,535,345,567,878'
$ids = implode($ids,',');
$result = $msqli->prepare("SELECT foo,blar FROM table WHERE id IN (?));
$result->bind_param("i", $ids);
$result->execute();
上述方法失败,计算数组中的元素数量和更改 SQL 字符串中问号的数量以及为数组中的每个元素调用 bind_parm 也失败了。仅使用逗号分隔的字符串也会失败。
我在 Google 中找不到关于此的好的文档,那么您是如何解决这个问题的?
【问题讨论】: