我想动态修改SQL查询的语法 例如:
$var = SELECT * FROM schools WHERE teacher = 1 OR teacher = 2 AND student = 1 OR student = 2 OR student = 3 AND classroomId = 12
所以在上面的例子中,我想在括号中对OR进行分组,否则查询结果将不正确。
我想通过查询的函数或脚本动态转换为:
$var = SELECT * FROM schools WHERE (teacher = 1 OR teacher = 2 ) AND (student = 1 OR student = 2 OR student = 3) AND classroomId = 12
有可能吗?
答案 0 :(得分:0)
你可以做到这一点
$arr = array (
"teacher" => array(1,2),
"student" => array(1,2,3),
"classroomId" => array(1)
);
function mylist ($array) {
foreach ($array as $name => $arr) {
foreach ($arr as &$item)
$item = $name . '=' . $item;
$or[] = '(' . implode(' OR ', $arr) . ')';
}
return implode(' AND ', $or);
}
echo 'SELECT * FROM schools WHERE '. mylist($arr);
resuде
SELECT * FROM schools WHERE (teacher=1 OR teacher=2) AND (student=1 OR student=2 OR student=3) AND (classroomId=1)