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

100
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

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

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

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

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

120
Callback для liqpay

Callback для liqpay

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

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

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

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

136