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.