Есть ли способ сделать параметр необязательным в PHP PDO? - PullRequest
1 голос
/ 07 октября 2010

Скажите, у меня есть этот запрос:

$qry = 'SELECT p.id FROM products p 
        WHERE p.type = :type AND p.parent = :parent';

Если бы я хотел сделать «тип» необязательным, то единственный способ, которым я знаю, как это сделать - это сделать что-то вроде этого:

$qry = 'SELECT p.id FROM products p 
        WHERE p.parent = :parent';

if(isset($type))
{
    $qry .= 'AND p.type = :type';
}

Это лучший способ? Мне интересно, есть ли способ сохранить его как оригинал, и использовать какой-то параметр, чтобы указать, что это необязательно ... Например, если $ type = "*", тогда потяните все типы.

Какой лучший способ сделать это?

Ответы [ 2 ]

1 голос
/ 07 октября 2010

Вы также можете проверить пустые значения

if(isset($type) && $type != '') {
    $qry .= 'AND p.type = :type';
}
0 голосов
/ 07 октября 2010

Теоретически это может работать:

 AND :type IN (NULL, p.type)

Не уверен насчет скорости. Но он полностью помещает логику вашего запроса в базу данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...