ユーザー入力用に準備されたステートメントを作成しようとしています。パラメータの数はユーザー入力に基づいて変化します。 OAM はこのコードを試しています
PHP コード:
print_r($inputArray) を実行すると、出力は次のようになります: リーリー
を実行すると、出力は次のようになります:
###何が悪かったのか?
汎用クエリ ハンドラを作成し、それにクエリ、パラメータ配列、およびパラメータ タイプのリストを渡します。一連の結果またはメッセージを返します。これは、mysqli の個人的なバージョンです (私は主に PDO を使用しますが、これ用に同様の機能がセットアップされています)。挿入、更新、削除についても同じことを行います。次に、1 つのライブラリを維持し、すべての作業にそれを使用するだけです :) これを使用して開始すると、接続エラーなどをより適切に処理したくなる可能性があることに注意してください。
% プレースホルダーではなくパラメータを囲みます。
%
私のコード スニペットでは、コードで示されている手続き型構文ではなく、オブジェクト指向の mysqli 構文を使用します。
まず、必要な要素をセットアップする必要があります:
splat 演算子 (...) を使用して、「解凍」を容易にするために、#2 と #3 を変数に結合します。データ型文字列は最初の要素である必要があり、その後 1 つ以上の要素がバインドされた値を表します。
...
論理的包含として、WHERE 句に条件がない場合、プリペアド ステートメントを使用するメリットはなく、テーブルを直接クエリするだけです。
コード: (PHPize.online デモ)
同様の動的クエリ手法を探している人向け:
SELECT
IN()
INSERT
execute()
汎用クエリ ハンドラを作成し、それにクエリ、パラメータ配列、およびパラメータ タイプのリストを渡します。一連の結果またはメッセージを返します。これは、mysqli の個人的なバージョンです (私は主に PDO を使用しますが、これ用に同様の機能がセットアップされています)。挿入、更新、削除についても同じことを行います。次に、1 つのライブラリを維持し、すべての作業にそれを使用するだけです :) これを使用して開始すると、接続エラーなどをより適切に処理したくなる可能性があることに注意してください。
リーリー%
プレースホルダーではなくパラメータを囲みます。私のコード スニペットでは、コードで示されている手続き型構文ではなく、オブジェクト指向の mysqli 構文を使用します。
まず、必要な要素をセットアップする必要があります:
splat 演算子 (
...
) を使用して、「解凍」を容易にするために、#2 と #3 を変数に結合します。データ型文字列は最初の要素である必要があり、その後 1 つ以上の要素がバインドされた値を表します。論理的包含として、WHERE 句に条件がない場合、プリペアド ステートメントを使用するメリットはなく、テーブルを直接クエリするだけです。
コード: (PHPize.online デモ)
リーリー同様の動的クエリ手法を探している人向け:
SELECT
、IN()
には動的な値の数が含まれますINSERT
1 回execute()
という動的行の数