从php和sql中的两个表中提取行

时间:2012-10-09 09:57:23

标签: php sql

我有两张表propertiesbuildings。我想根据标准从buildings表中提取行。

我已将这些建筑物ID放在变量中,如下所示:

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

我正在尝试根据上面的列表访问属性。

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

但我没有得到理想的结果。我怎样才能得到理想的结果?这是正确的做法吗?

2 个答案:

答案 0 :(得分:4)

删除单引号(以及可选的大括号)。

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

请注意,IN并不总是效率最高,因为它无法使用索引 - 如果您可以使用BETWEEN,则可能会在大型数据集上获得更好的性能。但对于较小的数据集,IN很好。

答案 1 :(得分: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库