sql >> Database teknologi >  >> RDS >> Mysql

Der vises fejl i mysqli-koden og call_user_func_array()

Dette er en klæbrig situation, der er forårsaget af ændring af call_user_func_array adfærd i PHP 5.4 (jeg må antage): Dokumentation

Hvor grimt det end er, vil det virke at kalde bind_param på denne måde:

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

Jeg hader det her lige så meget, som du sikkert gør. Jeg foreslår at skifte fra mysqli til PDO som håndterer variable parametre på en meget pænere måde (og har overlegen syntaks generelt, efter min mening):

$pdo = new PDO('mysql:host=localhost', 'username', 'password');
$stmt = $pdo->prepare($selectedstudentanswerqry);
$stmt->execute($parameters);
$selectedstudentanswernum = $stmt->rowCount();


  1. SQL Server trunkering og 8192 begrænsning

  2. InnoDB indsætter meget langsomt og langsommere

  3. DISTINCT for kun én kolonne

  4. Søg i Microsoft SQL Server-databasen efter lagrede data