$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?
Попробуй вот так:
$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);
Если 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 проверки.
Продвижение своими сайтами как стратегия роста и независимости