构建SQL选择更好的方法? (Oracle)的

时间:2010-11-15 12:17:08

标签: php zend-framework mysql

我的一个班级中有以下代码部分:

                $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的所有记录..

2 个答案:

答案 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不能包含任何有害的东西,你应该能够直接使用它而不必拆分它并循环。