4

これは簡単な質問のようですが、私の人生では答えを見つけることができません。値に関係なく、列内のすべての行を選択するにはどうすればよいですか? たとえば、列の場所にすべてが必要な場合:

"SELECT * FROM whateverTable WHERE id='$id' AND date='$date' AND location='I don't care, return everything'"

このデータベースへの動的 URL クエリを取得しているため、そこに場所が必要であることに注意してください。

編集 私はいくつかの答えを読みましたが、自分自身を明確にしていないことを恥じています。これを必要とせずに、列のすべての行を選択できるMySQLクエリが可能かどうかを確認しようとしています:

if ($location == '') {
  "SELECT * FROM whateverTable WHERE id='$id' AND date='$date'"
} else {
  "SELECT * FROM whateverTable WHERE id='$id' AND date='$date' AND location='$location'"
}

そのようにコードをハッキングするのではなく (実際のコードにはもっと多くのクエリ句があるため)、次のようなことが可能かどうかを確認しようとしています:

"SELECT * FROM whateverTable WHERE id='$id' AND date='$date' AND location='%'"

またはこれ:

"SELECT * FROM whateverTable WHERE id='$id' AND date='$date' AND location='.*'"

しかし、私は運がありません。そうでない場合は、先に進みます。はっきり言ってなくてごめんなさい

4

5 に答える 5

5

質問で述べたように、クエリを動的に作成し、そのフィールドを省略する必要があります。クエリは次のようになります。

SELECT * FROM whateverTable
WHERE id = '$id'
AND date = '$date'

何らかの理由でそれができない場合は、次のようなことを試すことができます。

SELECT * FROM whateverTable
WHERE id = '$id'
AND date = '$date'
AND (location='$location' OR '$location' = '')

空の文字列に設定$locationすると、すべての場所が返されます。

また、SQLインジェクション攻撃を回避するために、文字列を正しくエスケープすることを忘れないでください。

于 2012-06-12T21:14:26.133 に答える
1

SELECT location FROM whateverTablelocation 列のすべての行/値を返します。

結果のフィルタリングを開始する場合は、where 句を追加します。

于 2012-06-12T21:14:14.790 に答える
0

クエリを動的に構築している場合は、場所がnullか空の文字列かどうかを確認してから、クエリのその部分を省略してください。

于 2012-06-12T21:14:54.070 に答える