我有两张表properties
和buildings
。我想根据标准从buildings
表中提取行。
我已将这些建筑物ID放在变量中,如下所示:
$buildings = "1,2,3,4,5,6,7,8,9,10"
我正在尝试根据上面的列表访问属性。
SELECT * FROM properties WHERE BUILDING_ID IN ('{$buildings}')
但我没有得到理想的结果。我怎样才能得到理想的结果?这是正确的做法吗?
答案 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库