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

列名としてキーを使用して配列を挿入するPDO

    私はこのようにします:

    最初に列を宣言します。これらを使用して、列として使用する$_POSTのサブセットを抽出します。そうしないと、ユーザーがテーブルのどの列とも一致しない偽のリクエストパラメータを渡す可能性があり、SQLが破損する可能性があります。

    $columns = array('username','email','password','name');
    $column_list = join(',', $columns);
    

    名前付きパラメータプレースホルダー、つまり:usernameを作成します 。

    $param_list = join(',', array_map(function($col) { return ":$col"; }, $columns));
    

    SQLを個別に作成します。これは、SQLが独自の変数に含まれていると、読み取りとデバッグが容易になるためです。

    $sql = "INSERT INTO `applications` ($column_list) VALUES ($param_list)";
    

    常に prepare()から返されたエラーステータスを確認します およびexecute()

    $statement = $db->prepare($sql);
    if ($statement === false) {
      die(print_r($db->errorInfo(), true));
    }
    

    ここではのみを取り上げます 挿入する列に一致する$_POSTのフィールド。

    $param_values = array_intersect_key($_POST, array_flip($columns));
    

    そして、その配列をexecute()に渡します 。もう一度、エラーの戻りステータスを確認します。

    $status = $statement->execute($param_values);
    if ($status === false) {
      die(print_r($statement->errorInfo(), true));
    }
    



    1. SQL:1つのテーブルに存在しないキーを選択します

    2. JDBCタイプの方言マッピングなし:1111

    3. ReplicationManagerは、接続を開くときに例外をスローしました

    4. 3つのテーブルから行を削除する方法-クエリエラー