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

プリペアドステートメントのパラメータにデータが提供されていません

    制御文字列"sssd"によって4つの引数のみをバインドしましたが、多くのパラメーターがあります。変数をmysqliにバインドする場合、パラメーターごとに1文字が必要です。例:

    mysqli_stmt_bind_param($stmt, "sssdsssssssssdd", $firstname, $surname, $address, 
        $gender, $city, $province, $postalcode, $phone, $secondphone, $email, 
        $organization, $inriding, $ethnicity, $senior, $student);
    

    (私は、先輩と学生が整数であり、「d」コードが必要であると想定しています。)

    mysqli_real_escape_string()で変数を処理する必要はありません。これが、パラメーターを使用するポイントです。エスケープも行うと、データベースのデータに文字通りの円記号が含まれるようになります。

    また、どのような場合でもhtmlspecialchars()を使用する必要はありません。データベースに挿入するときではなく、HTMLに出力するときに使用します。 &のようなリテラルシーケンスを取得します データベース内のデータにあります。

    次のエラーについて:

    これは次の原因によるものです:

    $result = mysqli_query($mysqli,$stmt);
    

    この関数は、2番目の引数が文字列(新しいSQLクエリ)であることを想定しています。ただし、そのクエリはすでに準備されているため、次のものが必要です。

    $result = mysqli_stmt_execute($stmt);
    



    1. 一貫性のないPostgreSQLスレーブを再構築する方法

    2. 値を1つのフィールドから2つに分割

    3. SQLServerのデッドロックの構造とそれらを回避するための最良の方法

    4. Djangoの非プライマリ外部キー