Подготовка запроса к базе данных

112
17 декабря 2020, 02:10
    $stmt = $this->db->prepare("SELECT * FROM messages WHERE chatId = (:chatId) AND id < (:msgId) AND removeAt = 0 ORDER BY id DESC LIMIT 20");
    $stmt->bindParam(':chatId', $chatId, PDO::PARAM_INT);
    $stmt->bindParam(':msgId', $msgId, PDO::PARAM_INT);

Данный код получает 20 сообщений с чата. Как получить 20 сообщений с непустым imgUrl?

Answer 1

Попробуй вот так:

$stmt = $this->db->prepare("SELECT * FROM messages WHERE chatId = (:chatId) AND id < (:msgId) AND removeAt = 0 AND imgUrl <> '' ORDER BY id DESC LIMIT 20");
$stmt->bindParam(':chatId', $chatId, PDO::PARAM_INT);
$stmt->bindParam(':msgId', $msgId, PDO::PARAM_INT);
Answer 2

Если imgUrl это колонка в таблице, то надо добавить условие

imgUrl IS NOT NULL AND imgUrl != ''
$stmt = $this->db->prepare("SELECT * FROM messages WHERE chatId = (:chatId) AND id < (:msgId) AND removeAt = 0 AND (imgUrl IS NOT NULL AND imgUrl != '') ORDER BY id DESC LIMIT 20");

UPD. По поводу двух условий.

Как заметил @Akina в данном случае и правда можно обойтись одной проверкой != ''.

Я использую две по привычке от обратного сравнения, когда надо выбрать пустые поля, тогда все же необходимо 2 проверки.

READ ALSO
Получить значение SimpleXMLElement Object

Получить значение SimpleXMLElement Object

Достаю из объекта значание:

143
Не работает форма обратной связи html, php

Не работает форма обратной связи html, php

Я никогда разработкой сайтов не занималась, но вот пришлось:) Сайт dona-telaby Форма в самом низу

130
Callback для liqpay

Callback для liqpay

Пытаюсь работать с платёжной системой liqpay, в апи настраиваются два url: result_url и server_urlПервый отправляет пользователя на эту страницу, если он перейдёт...

139
Алгоритм сохранения любого файла

Алгоритм сохранения любого файла

Мне нужно дать пользователю делиться абсолютно любым файлом, при этом при загрузке на сервер использовать минимум проверок

146