我在使用数组创建预准备语句时遇到问题,这是我的代码:
$strinanterior1 = implode(',',$greaterThan);
$stmt11 = $mysqli->prepare("SELECT nombre FROM usuarios WHERE id IN (?)");
$stmt11->bind_param('i', $strinanterior1);
$stmt11->execute();
$stmt11->store_result();
$stmt11->bind_result($nombresmayores);
$arraynombresmayores = array();
$stmt11->store_result();
while($stmt11->fetch()){
$arraynombresmayores[] = $nombresmayores;
}
变量$stringanterior1
正确地输出我想要在我的查询上设置的变量(2,4),但查询只返回第一个变量(2)的查询,即" Carlos&#34 ;
如果我手动将2,4
放在问号所在的位置,那么查询就可以了,但是当我将它与变量$stringanterior1
绑定时,它只会输出它应返回的两条记录中的一条。
答案 0 :(得分:0)
您必须为每个值提供绑定参数。
// create a list of ?
$params = implode(',', array_fill(0, count($greaterThan), '?'));
$sql = 'SELECT nombre FROM usuarios WHERE id IN (' . $params . ')';
// prepare and bind the params
$stmt11 = $mysqli->prepare($sql);
foreach ($greaterThan as $value) {
$stmt11->bind_param('i', $value);
}