Dies ist eine schwierige Situation, die durch die Änderung von call_user_func_array verursacht wird Verhalten in PHP 5.4 (muss ich annehmen): Dokumentation
So hässlich das auch ist, es funktioniert, bind_param aufzurufen so:
$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]);
}
Ich hasse das genauso wie du wahrscheinlich. Ich schlage vor, von mysqli zu wechseln zu PDO die mit variablen Parametern viel besser umgeht (und meiner Meinung nach im Allgemeinen eine überlegene Syntax hat):
$pdo = new PDO('mysql:host=localhost', 'username', 'password');
$stmt = $pdo->prepare($selectedstudentanswerqry);
$stmt->execute($parameters);
$selectedstudentanswernum = $stmt->rowCount();