Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Fehler in mysqli-Code und call_user_func_array()

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();