我正在使用准备好的语句将一些旧代码移动到新的 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 也失败。仅使用逗号分隔的字符串也会失败。
我在谷歌上找不到关于这方面的好文档,那么你是如何解决这个问题的?