ホームページ  >  に質問  >  本文

動的な数の LIKE 条件を使用して、mysqli プリペアド ステートメントとして SELECT クエリを構築する

ユーザー入力用に準備されたステートメントを作成しようとしています。パラメータの数はユーザー入力に基づいて変化します。 OAM はこのコードを試しています

PHP コード:

リーリー

print_r($inputArray) を実行すると、出力は次のようになります: リーリー

エラー ログにはエラーは表示されません。

###何が悪かったのか?

P粉269847997P粉269847997181日前315

全員に返信(2)返信します

  • P粉826429907

    P粉8264299072024-03-26 14:50:12

    汎用クエリ ハンドラを作成し、それにクエリ、パラメータ配列、およびパラメータ タイプのリストを渡します。一連の結果またはメッセージを返します。これは、mysqli の個人的なバージョンです (私は主に PDO を使用しますが、これ用に同様の機能がセットアップされています)。挿入、更新、削除についても同じことを行います。次に、1 つのライブラリを維持し、すべての作業にそれを使用するだけです :) これを使用して開始すると、接続エラーなどをより適切に処理したくなる可能性があることに注意してください。

    リーリー

    返事
    0
  • P粉787806024

    P粉7878060242024-03-26 12:36:45

    % プレースホルダーではなくパラメータを囲みます。

    私のコード スニペットでは、コードで示されている手続き型構文ではなく、オブジェクト指向の mysqli 構文を使用します。

    まず、必要な要素をセットアップする必要があります:

    1. WHERE 句の式 -- OR
    2. で区切る
    3. 値のデータ型 - 値は文字列であるため、「s」を使用します
    4. 準備されたステートメントにバインドされるパラメーター

    splat 演算子 (...) を使用して、「解凍」を容易にするために、#2 と #3 を変数に結合します。データ型文字列は最初の要素である必要があり、その後 1 つ以上の要素がバインドされた値を表します。

    論理的包含として、WHERE 句に条件がない場合、プリペアド ステートメントを使用するメリットはなく、テーブルを直接クエリするだけです。

    コード: (PHPize.online デモ)

    リーリー

    同様の動的クエリ手法を探している人向け:

    返事
    0
  • キャンセル返事