sql >> データベース >  >> RDS >> Mysql

PHP-致命的なエラー:メンバー関数bind_param()の呼び出し

    TL \ DR

    クエリがprepare()に失敗しています 。どこで、どのように、そしてなぜかを理解する必要があります。この回答の最後のコードブロックを見て、エラーが何であるかをお知らせください。

    クエリから始めます。 MySQLの予約語にアクセスしようとしています。これらを次のようにバッククォートでラップする必要があります:

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

    これで、変数$stmtをインスタンス化しています。 if内 ブロックしますが、そのブロックの外でバインドしようとします。これを変更する必要があります:

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

    これに:

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

    また、クエリが実際に正しく準備されていることを確認してください:

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

    次に、結果をお知らせください。



    1. ニージャークパフォーマンスチューニング:一時テーブルの誤った使用

    2. faxext.mysqlでdictcursorに相当するものを探しています

    3. MySQL CASE ... WHERE...THENステートメント

    4. SQLServer2014のStandardEditionのお客様にとってのすばらしいニュース