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 回答