Обучение/Помощь новичкам | PDO запрос
может оператор in можно использовать? и fetchAll
Вилы Выкидные (29.06.2021 в 13:18)
TheWilf ,
примерно (ПРИМЕРНО!!!) так
выбираешь одним запросом весь массив столбца status
потом функцией count() считаешь, сколько в массиве элементов с тем или иным значением статуса
TheWilf ,
примерно (ПРИМЕРНО!!!) так
выбираешь одним запросом весь массив столбца status
потом функцией count() считаешь, сколько в массиве элементов с тем или иным значением статуса
А sql не умеет разве считать это?) И быстрее и проще
TheWilf (29.06.2021 в 12:24) Scammer , К сожалению не хочет,
Проверяй тогда данные в таблице какие или условие where, так как проверил на другой таблице и вот.. Возможно статус колонку не так задал, но если там NULL выдало, кажется для пользователя просто нету данных к выводу и все https://i.imgur.com/2EvUgWA.png
php
array(4) { ["close"]=> NULL ["active"]=> NULL ["mod"]=> NULL ["banned"]=> NULL ________
посл. ред. 29.06.2021 в 13:41; всего 1 раз(а); by Scammer
Вилы Выкидные (29.06.2021 в 13:18)
TheWilf ,
примерно (ПРИМЕРНО!!!) так
выбираешь одним запросом весь массив столбца status
потом функцией array_count_value() считаешь, сколько в массиве элементов с тем или иным значением статуса
TheWilf ,
примерно (ПРИМЕРНО!!!) так
выбираешь одним запросом весь массив столбца status
потом функцией array_count_value() считаешь, сколько в массиве элементов с тем или иным значением статуса
Руки бы оторвать таким кодерам кто так делает ))
А потом на запуск одной итерации скрипта уходит овер много озу и процессорного времени :_)
Хотя секунду там mod это зарезервированное слово, попробуй этот код
php
$stmt = $go -> prepare("SELECT SUM(IF(status = 'close',1,0)) as close,SUM(IF(status = 'active',1,0)) as active,SUM(IF(status = 'mod',1,0)) as `mod`,SUM(IF(status = 'banned',1,0)) as banned FROM `ads` WHERE `id_user` = ?"); $stmt -> execute([$uid]); $count = $stmt->fetch(PDO::FETCH_ASSOC); echo $count['close'].' закрытых объявлений'; echo $count['active'].' активных объявлений'; echo $count['mod'].' модерируемых объявлений'; echo $count['banned'].' забаненных объявлений'; Scammer (29.06.2021 в 13:43)
Руки бы оторвать таким кодерам кто так делает ))
А потом на запуск одной итерации скрипта уходит овер много озу и процессорного времени :_)
Руки бы оторвать таким кодерам кто так делает ))
А потом на запуск одной итерации скрипта уходит овер много озу и процессорного времени :_)
PHP быстрее разберёт массив, который ему из БД прилетит, чем запрос к БД, который не будет обрабатывать следующий в очереди запрос от другого пользуна, пока не обработает всю ту логику, которую ты засунул в него, нельзя логикой запросы нагружать, PHP тебе тогда для чего, для echo?
Вилы Выкидные (29.06.2021 в 14:01)
PHP быстрее разберёт массив, который ему из БД прилетит, чем запрос к БД, который не будет обрабатывать следующий в очереди запрос от другого пользуна, пока не обработает всю ту логику, которую ты засунул в него, нельзя логикой запросы нагружать, PHP тебе тогда для чего, для echo?
PHP быстрее разберёт массив, который ему из БД прилетит, чем запрос к БД, который не будет обрабатывать следующий в очереди запрос от другого пользуна, пока не обработает всю ту логику, которую ты засунул в него, нельзя логикой запросы нагружать, PHP тебе тогда для чего, для echo?
Запрос который при повторном вызове выдаст кеш или скрипт который сожрет ресурсы и дольше будет выполняться)
Ради интереса покажу сейчас тестовый стенд)
Вилы Выкидные (29.06.2021 в 14:01)
PHP быстрее разберёт массив, который ему из БД прилетит, чем запрос к БД, который не будет обрабатывать следующий в очереди запрос от другого пользуна, пока не обработает всю ту логику, которую ты засунул в него, нельзя логикой запросы нагружать, PHP тебе тогда для чего, для echo?
PHP быстрее разберёт массив, который ему из БД прилетит, чем запрос к БД, который не будет обрабатывать следующий в очереди запрос от другого пользуна, пока не обработает всю ту логику, которую ты засунул в него, нельзя логикой запросы нагружать, PHP тебе тогда для чего, для echo?
И почему бд не будет обрабатывать следующий запрос ?) БД не однопоточная, а запрос не блокирующий
Scammer (29.06.2021 в 13:50) Хотя секунду там mod это зарезервированное слово, попробуй этот код
php
$stmt = $go -> prepare("SELECT SUM(IF(status = 'close',1,0)) as close,SUM(IF(status = 'active',1,0)) as active,SUM(IF(status = 'mod',1,0)) as `mod`,SUM(IF(status = 'banned',1,0)) as banned FROM `ads` WHERE `id_user` = ?"); $stmt -> execute([$uid]); $count = $stmt->fetch(PDO::FETCH_ASSOC); echo $count['close'].' закрытых объявлений'; echo $count['active'].' активных объявлений'; echo $count['mod'].' модерируемых объявлений'; echo $count['banned'].' забаненных объявлений'; php
$stmt = $go->prepare('select `status` from `ads` where `id_user` = ?'); $stmt->execute([$uid]); $count = array_count_value($stmt->fetchAll()); echo $count['close'].' закрытых объявлений'; echo $count['active'].' активных объявлений'; echo $count['mod'].' модерируемых объявлений'; echo $count['banned'].' забаненных объявлений'; ________
посл. ред. 29.06.2021 в 14:06; всего 1 раз(а); by Вилы Выкидные