У меня проблема с функцией IFNULL, используемой в условии WHERE IN:
SELECT provider_id FROM provider WHERE provider_id IN ( IFNULL("131, 132",'999') )
Я перепробовал все варианты цитирования, такие как:
SELECT provider_id FROM provider WHERE provider_id IN ( IFNULL("'131', '132'", '999') )
Но не может сделать это с помощью PHP.
Не могли бы вы предложить, как правильно отформатировать многозначный параметр в функции IFNULL?
IFNULL
не берет «многозначный параметрMsgstr «Нет способа правильно отформатировать его.
IFNULL
Функция принимает только два аргумента. Если первый аргумент оценивается как NULL, функция возвращает второй аргумент. В противном случае он возвращает первое выражение.
То есть выражение SQL
IFNULL(foo,'bar')
эквивалентно
CASE WHEN foo IS NULL THEN 'bar' ELSE foo END
Это:
SELECT IFNULL("131, 132",'999')
возвращает:
IFNULL("131, 132",'999')
--------------------------
131, 132
И это:
provider_id IN ( IFNULL("131, 132",'999') )
эквивалентно:
provider_id = '131, 132'
Непонятно, чего вы пытаетесь достичь или почему IFNULL
Функция включена в утверждение.
Сделайте шаг назад и четко сформулируйте проблему, которую вы пытаетесь решить.
Прежде всего ваш вопрос использует IFNULL
на ненулевые значения, которые не имеют смысла.
во-вторых IFNULL
вернул бы одно значение, нет необходимости делать provider_id IN (...)
для одного значения, так как оно будет таким же, как provided_id=...
И, наконец, если вы хотите проверить, является ли переменная PHP нулевой, то сделайте это с PHP.
//$pdo_test
$query = "SELECT provider_id FROM provider";
if ($pdo_test !== null) {
$query = " WHERE provider_id=?"}
Затем вы можете сделать запрос:
$stmt = $pdo->prepare($query);
if ($pdo_test !== null) {
$stmt->bindParam(1,$pdo_test,PDO::PARAM_INT); //Looks like an int, but change if its something else
}
//Code like $stmt->fetch() and processing goes here
SELECT provider_id FROM provider WHERE provider_id IN ('131', '132', '999')
Просто попробуйте приведенный выше код.
Вам не нужна дополнительная цитата или что-то еще, чтобы выполнить ваш запрос.