我在使用数组创建预备语句时遇到问题,这是我的代码:

$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);
}

10-06 06:46