我的一个班级中有以下代码部分:
$l = new Location();
$result = $l->getLocIdsbyCity($city); // returns csv
$ids = explode(',', $result);
$where = 'LOC_ID = ' . $ids[0];
unset($ids[0]);
foreach ($ids as $id) {
$where .= ' OR LOC_ID = ' . $id;
}
$select->where($where);
是否有更“优雅”的方式来构建select stmt?我需要一个提供的ID的所有记录..
答案 0 :(得分:1)
假设您的csv
注入安全(包含可信值且没有用户提供的输入):
$l = new Location();
$result = $l->getLocIdsbyCity($city); // returns csv
$where = "LOC_ID IN ($result)";
$select->where($where);
如果不是,你应该爆炸它,mysql_real_escape_string
每个值并内爆。
答案 1 :(得分:0)
您可以使用in
运算符来形成如下条件:
where LOC_ID in (1,2,3,4,5)
如果你确定$result
不能包含任何有害的东西,你应该能够直接使用它而不必拆分它并循环。