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

PHP - Fatal fejl:Kald til en medlemsfunktion bind_param()

TL\DR

Din forespørgsel kan ikke prepare() . Du skal finde ud af hvor, hvordan og hvorfor. Se på den sidste kodeblok i dette svar, og lad os vide, hvad fejlen er.

Jeg starter med forespørgslen. Du forsøger at få adgang til et MySQL-reserveret ord . Du skal pakke dem ind i backticks som dette:

$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(?, ?, ?, ?, ?, ?, ?, ?, ?, ".
    "?, ?, ?, ?, ?, ?, ?)";

Nu instansierer du variablen $stmt inden for if blok, men forsøger så at binde den uden for den blok. Du skal ændre dette:

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

Til dette:

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

Sørg også for, at din forespørgsel faktisk forberedes korrekt:

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

Så lad os vide, hvad der dukker op.



  1. Hvordan fungerer hver række i triggere i mysql?

  2. Oprettelse af strengindeks med kode først

  3. Langsom LEFT JOIN på CTE med tidsintervaller

  4. Fejlkode 1005, SQL-tilstand HY000:Kan ikke oprette tabel fejlnr.:150