У меня есть таблица SQL с именем messages. Я хочу выбрать имена пользователей DISTINCT из таблицы, которые отправляют любое сообщение получателю, у которого есть идентификатор ($ uid), а также выбрать COUNT(message) для каждого отправителя, используя однострочный запрос.
Я пробовал этот код:
$query = "SELECT DISTINCT clientname,user_id,user1pic, COUNT("SELECT id FROM messages WHERE clientname=clientname) AS counted FROM messages WHERE receiver=$uid and status='unread' ";
$messages=mysqli_query($cnx,$query);
while($row=mysqli_fetch_array($cnx,$messages)){
echo '<a class = "example" > '.$row['clieenter code herentname'].''.$row['counted'].'</a>' ;}
if (mysqli_num_rows($cnx,$messages)<=0){
echo '<a class = "example" href = "#">You Have No Messages</a>' ;
}
Намек: GROUP BY. Также могут помочь выборочные данные и желаемые результаты.
@GordonLinoff мне было интересно, есть ли способ подсчитать сообщения каждого отправителя в одной строке запроса
Скорее всего, в этом запросе есть уязвимость, связанная с внедрением SQL-кода - не стоит с этим соглашаться.






Попробуйте следующее:
SELECT
clientname,
user_id,
user1pic,
COUNT(1) AS counted
FROM
messages
WHERE
receiver=:uid
and status='unread'
Group by
clientname,
user_id,
user1pic;
Я заменил вашу встроенную переменную PHP на заполнитель параметров - используйте привязку параметров, чтобы избежать SQL-инъекции.
Таааанкс работал,
Сделайте этот вопрос логичным, включив образец данных таблицы вместе с ожидаемым результатом.