Il s'agit d'une situation délicate causée par la modification de call_user_func_array
comportement en PHP 5.4 (je dois supposer) : Documents
Aussi moche que cela soit, cela fonctionnera pour appeler bind_param
de cette façon :
$selectedstudentanswerqry .= ' WHERE ' . implode(' AND ', $where);
global $mysqli;
$stmt =$mysqli->prepare($selectedstudentanswerqry);
if (count($where) === 1) {
$stmt->bind_param($parameterTypes, $parameters[0]);
}
else if (count($where) === 2) {
$stmt->bind_param($parameterTypes, $parameters[0], $parameters[1]);
}
else if (count($where) === 3) {
$stmt->bind_param($parameterTypes, $parameters[0], $parameters[1],
$parameters[2]);
}
Je déteste ça autant que vous probablement. Je suggère de passer de mysqli
à PDO
qui gère les paramètres variables d'une manière beaucoup plus agréable (et a une syntaxe supérieure en général, à mon avis):
$pdo = new PDO('mysql:host=localhost', 'username', 'password');
$stmt = $pdo->prepare($selectedstudentanswerqry);
$stmt->execute($parameters);
$selectedstudentanswernum = $stmt->rowCount();