dbSimple выборка по нескольку AND как сделать ??

genarator2003

Постоялец
Регистрация
23 Авг 2007
Сообщения
115
Реакции
8
Код:
SELECT * FROM `cars` WHERE brand_id=55 AND model_name='name' AND salon_id=50
Еcть такой запрос причем каких-то условий может и не быть
Например

Код:
SELECT * FROM `cars` WHERE brand_id=55 AND model_name='name'

Т.е. нужно чтобы в зависимости от количества пар ключ значение дописывал нужное количество WHERE $key=$val and $key1=$val1
Почитал доку, но подобного не нашел, можно ли такое реализовать на DbSimple.??
 
может я чегото не понимаю но вроде всё сводится к составлению запроса те к чистому php

почему нельзя все пары помещать в массив
затем просто

PHP:
$sql = implode(' AND ', $array);
$nsql = 'SELECT * FROM `cars` WHERE '.$sql;
 
может я чегото не понимаю но вроде всё сводится к составлению запроса те к чистому php
почему нельзя все пары помещать в массив
затем просто
PHP:
$sql = implode(' AND ', $array);
$nsql = 'SELECT * FROM `cars` WHERE '.$sql;

PHP:
$sql = implode(' AND ', $array);
$nsql = 'SELECT * FROM `cars` WHERE 1=1 '.$sql;

иначе если $array пустой, ошибка в запросе будет...
 
Если массив пустой, то лучше делать отдельную проверку и переписывать запрос без WHERE вовсе.

Т.к. по моим наблюдениям условие 1=1 таки прилично замедлет запрос по сравнению с запросом без условией вовсе.
 
Не занимайтесь глупостями, в любом случае у Вас число получаемых параметров для выборки известно.

проверяйте наличие входящих параметров от пользователя. и на основе их присутствия стройте нужный запрос.
 
PHP:
$sql = implode(' AND ', $array);
$nsql = 'SELECT * FROM `cars` WHERE 1=1 '.$sql;
иначе если $array пустой, ошибка в запросе будет...

Ибо не вариант, делайте дополнительную отдельную проверку массива, верняк и надежность.
 
Примерно так:
PHP:
$where='';
foreach($ar as $i=>$v){
$where.=((!empty($where))?' AND ':'').$i.'='.$v;
}
if(!empty($where)) $where=' WHERE '.$where;
И еще бы проверить типы переменных, я так понимаю, там и строковые бывают и числовые.
В общем, все зависит от того, как данные передаются, какова их структура.
 
Назад
Сверху