sql >> Databasteknik >  >> RDS >> Mysql

PHP - Fatalt fel:Anrop till en medlemsfunktion bind_param()

TL\DR

Din fråga misslyckas med att prepare() . Du måste ta reda på var, hur och varför. Titta på det sista kodblocket i det här svaret och låt oss veta vad felet är.

Jag börjar med frågan. Du försöker komma åt ett reserverat MySQL-ord . Du måste slå in dem i backticks så här:

$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 instansierar du variabeln $stmt inom if block men försöker sedan binda det utanför det blocket. Du måste ändra detta:

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

Till detta:

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

Se också till att din fråga faktiskt förbereds 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);
}

Låt oss sedan veta vad som dyker upp.



  1. Hur man schemalägger databassäkerhetskopior med ClusterControl

  2. Skillnad mellan databas och schema

  3. välj distinct count(id) kontra select count(distinct id)

  4. Varför behöver en oracle plsql varchar2-variabel en storlek men inte en parameter?