2

私は2つのテーブルpropertiesbuildings. buildings基準に従ってテーブルから行を抽出したい。

以下のように、これらの建物の ID を変数に入れました。

$buildings = "1,2,3,4,5,6,7,8,9,10"

上記のリストに従ってプロパティにアクセスしようとしています。

SELECT * FROM properties WHERE BUILDING_ID IN ('{$buildings}')

しかし、私は望ましい結果を得ていません。どうすれば望ましい結果を得ることができますか? これは正しいアプローチですか?

4

2 に答える 2

4

一重引用符 (およびオプションで中括弧) を削除します。

$query = "SELECT * FROM properties WHERE BUILDING_ID IN ($buildings)"

INインデックスを使用できないため、常に最も効率的であるとは限らないことに注意してくださいBETWEEN。代わりに使用できる場合は、大規模なデータセットでパフォーマンスが向上する可能性があります。ただし、小さなデータセットの場合INは問題ありません。

于 2012-10-09T09:58:53.360 に答える
0

次のようなことができます:

$buildings = "1,2,3,4,5,6,7,8,9,10";
$buildingIDs = explode(",", $buildings);

$buildingQueries = array();
foreach ($buildingIDs as $buildingID) {
  $buildingQueries[] = "BUILDING_ID = " . $buildingID;
}

$query = "SELECT * FROM properties WHERE " . implode(" OR ", $buildingQueries);

これにより、インデックスを利用できるようになり、変数 ID が可能になります。

警告: mysqli または PDO を調べて、間もなく非推奨になる mysql ライブラリから離れてください。

于 2012-10-09T10:51:24.277 に答える