我在使用数组创建预备语句时遇到问题,这是我的代码:
$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”的查询。如果我手动将
2,4
放在问号所在的位置,查询效果很好,但是当我将其与变量$stringanterior1
绑定时,它仅输出应返回的两个记录之一。 最佳答案
您必须为每个值提供一个绑定参数。
// 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);
}