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

PHP - Schwerwiegender Fehler:Aufruf einer Member-Funktion bind_param()

TL\DR

Ihre Abfrage kann prepare() nicht ausführen . Sie müssen herausfinden, wo, wie und warum. Sehen Sie sich den letzten Codeblock dieser Antwort an und teilen Sie uns den Fehler mit.

Ich beginne mit der Abfrage. Sie versuchen, auf ein für MySQL reserviertes Wort zuzugreifen. Sie müssen diese wie folgt in Backticks einschließen:

$add = "INSERT INTO books (title, edited, created, ip,".
    " email_to, twitter, last_taken, questions_total, responses, ".
    "show_progress, need_correct, go_back, state, send_stats, ".
    "show_number, imported) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ".
    "?, ?, ?, ?, ?, ?, ?)";

Jetzt instanziieren Sie die Variable $stmt innerhalb des if blockieren, aber dann versuchen, es außerhalb dieses Blocks zu binden. Sie müssen dies ändern:

if ($stmt = $mysqli->prepare($add)) {
....
}
$stmt->bind_param(....);

Dazu:

if ($stmt = $mysqli->prepare($add)) {
....
$stmt->bind_param(....);
}

Stellen Sie außerdem sicher, dass Ihre Abfrage tatsächlich richtig vorbereitet wird:

if ($stmt = $mysqli->prepare($add)) {

    $stmt->bind_param("siisssiiiiiiiiii", $title, $edited, $created, $ip, $email_to, $twitter, $last_taken, $questions_total, $responses, $show_progress, $need_correct, $go_back, $state, $send_stats, $show_number, $importedVal);

    // execute it and all...
} else {
    die("Errormessage: ". $mysqli->error);
}

Dann lassen Sie uns wissen, was herauskommt.