Предложение Where, когда переменная имеет значение false, не учитывает это в запросе SQL?Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Предложение Where, когда переменная имеет значение false, не учитывает это в запросе SQL?

Сообщение Anonymous »

У меня есть кое-что, чего я не совсем понимаю, у меня есть решение, но я не знаю почему, и это меня немного сводит с ума

Контроллер

Код: Выделить всё

DB::connection()->enableQueryLog();

$transfer = Transfer::where('ticket_id', $last_ticket)->where('event_id', 36)->where('buyer', $user_email)->first();

$queries = DB::getQueryLog();

dd($queries);
Результат

Код: Выделить всё

array:1 [
0 => array:3 [
"query" => "select * from `transfers` where `ticket_id` = ? and `event_id` = ? and `buyer` = ? limit 1"
"bindings" => array:3 [
0 => false
1 => 36
2 => "[email protected]"
]
"time" => 0.36
]
]
Ситуация:

Код: Выделить всё

$last_ticket
в БД уникален и никогда не равен нулю, пуст или ложен.

В моем примере $last_ticket имеет значение false, но в БД нет ложных значений, почему я все равно получаю результаты?

Это потому, что всякий раз, когда условие ложно, это не учитывается в уравнении?

Итак, вопрос:
Как я могу получить правильные результаты, то есть: если $last_ticket имеет значение false, то результатов нет, и если в нем есть какие-то данные, то вернуть результат строки, ограниченный $last_ticket

Одним из вариантов может быть поставить if($last_ticket == false){$last_ticket='randomInexistentString_ag4dh&2g32y4t' так это не ноль и не ноль, но я не думаю, что это лучший вариант
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»