2

動的クエリを作成しようとしています。

これは正常に機能します:

$qstring="10000, 10001, 10003, 10005";

SELECT *
FROM orders
WHERE order_id in ($qstring);

これは、一致して選択するデータがない場合にも正常に機能します。

$qstring="";

SELECT *
FROM orders
WHERE order_id in ($qstring);

以下のようなものは、任意のデータと一致するために存在しますか?SQLのパターンマッチングを確認しましたが、すべてに一致するものは見つかりませんでした。

$qstring="*";

SELECT *
FROM orders
WHERE order_id in ($qstring);

ヒントはありますか?ありがとう!

4

3 に答える 3

3

したがって、クエリを実行する必要があります。

SELECT *
FROM orders
WHERE order_id in ($qstring);

パラメータに値が渡されなかった場合は正常に機能し@qstringます。この場合、代わりにこれを試してください。

SELECT * FROM orders 
WHERE ($qstring <> '*' AND order_id in ($qstring));
于 2012-11-06T13:22:39.390 に答える
2

すべてを一致させたい場合は、where句なしでselectを使用してください。

SELECT * FROM orders

あなたが強制された場合(あなたが説明した構造を使用するためのいくつかの奇妙な理由のために)そして...

$qstring="SELECT order_id FROM orders";
于 2012-11-06T13:24:02.383 に答える
1

すべてが必要な場合は、WHEREIN句を使用しないでください。

変数を確認し、必要$qstringな場合にのみ追加してWHERE order_id in ($qstring);ください

于 2012-11-06T13:21:39.230 に答える