0

アプリケーションに検索フォームがあり、データがバックエンドに送信され、結果のテーブルが返されます。クエリは次のように動的に構築されます。

  1. $_POST['data'] 内のすべてのフィールドは、クエリの特定のカテゴリの許可されたフィールド リストに対してフィルター処理されます。

  2. 空のフィールドは破棄されます。

ちなみに、これはデータを保存するときにも行われます。これで、1 つの単語で構成されるフィールドではまったく問題ありません。しかし、いくつかのクエリに複雑な JOIN があり、PDO があいまいなフィールドについて不平を言うことがあります (たとえば、「id」)。

この状況に最適に対処するにはどうすればよいですか? ユーザーにクエリを操作させたくありませんが、今日のように簡単にクエリを生成したいと考えています。

case 'id':
case 'company':
   $where .= ' AND `' . $field . '` = :' . $field;

...
4

2 に答える 2

0

テーブルAとテーブルBを結合する場合、Aのid列を参照するときは、必ずA.idを指定してください。そうすれば、idは「あいまいなフィールド」ではなくなります。

于 2013-03-07T23:02:10.310 に答える
0

各フィールド名を、それを含むテーブルの名前で完全修飾するだけです。そうでなければ、これを行う必要があります.2つのテーブル「カテゴリ」と「アイテム」があり、両方に「名前」と呼ばれるフィールドがあり、それぞれのオブジェクトの名前が含まれているとします。

于 2013-03-07T21:00:24.487 に答える