Друзья я совершил запрос где попытался взять колич строк в которых id=переменной $id. уже задрала это конверсия fetch-fetchall и тд. Научите нормально адекватно и грамотно выводить данные из массива,который мы взяли запросом из бд пж вот сам код PHP: //запрос на колич лайков записи $like_count = $connect->prepare("SELECT COUNT(*) FROM liked_content WHERE ilan_id=?"); $like_count->execute([$id]); $like_count = $like_count->fetch(PDO::FETCH_ASSOC); echo $like_count; --- Добавлено --- Вот что смог вывести используя print_r($like_count); Array ( [0] => Array ( [COUNT(*)] => 1 ) )
1. Данные int, float, string из массива выводятся по их индексу. 2. Если нет уверенности, какие данные находятся в переменной, необходимо сделать анализ этой переменной var_dump($like_count) у вас будет примерно такой массив: PHP: array(1) { ["count(id)"]=> string(2) "23" } Поэтому лучше сделать так: PHP: $like_count = $connect->prepare("SELECT COUNT(*) as `count` FROM liked_content WHERE ilan_id=?"); $like_count->execute([$id]); $like_count = $like_count->fetch(PDO::FETCH_ASSOC); var_dump($like_count); результат будет: PHP: array(1) { ["count"]=> string(2) "23" } затем вывести данный результат PHP: echo $like_count['count']; или так PHP: $like_count = $connect->prepare("SELECT COUNT(*) as `count` FROM liked_content WHERE ilan_id=?"); $like_count->execute([$id]); $like_count = $like_count->fetch(PDO::FETCH_ASSOC); echo $like_count ? (int)current($like_count) : 0;
Хотя какого фига он вложенный, если fetch? --- Добавлено --- Какая конверсия? Вы своими «конверсиями» людей с толку сбиваете --- Добавлено --- Когда выбираешь COUNT(*), в выборке будет только одна запись (с одним «полем»). Нужно использовать fetch: PHP: list($count) = $stm->fetch(... Можно даже не переименовывать COUNT(*), но обычно такого непотребства в ключах всегда стараются избегать.
Почему с тупым ключом? Как его сделать умным? ) --- Добавлено --- Я так и сделал.Потом попытался вывести его используя индекс PHP: echo $like_count['1']; Но не сработало
Ответ есть прям в сделанной вами цитате Если будет ругаться на count, возьмите в косые кавычки или используйте др. имя.
Это уже чуть по сложнее,тут новые вещи какие то для меня --- Добавлено --- Он не может найти ключ count выводит ошибку array(1) { [0]=> array(1) { ["COUNT(*)"]=> string(1) "1" } } Warning: Undefined array key "count" inD:\OSPanel\domains\iscok\ilan incele.phpon line35
Запрос может сбоить, поэтому fetch может вернуть false. Не можно проверить еще результат execute или просто использовать исключения --- Добавлено --- Я вам выше писал, что у вас какая-то хрень с вложенным массивом. --- Добавлено --- И имя count не «проявилось». Походу это вообще какой-то левый результат
Да не,вот код PHP: $like_count = $connect->prepare("SELECTCOUNT(*) FROM liked_content WHERE ilan_id=?"); $like_count->execute([$id]); $like_count = $like_count->fetchall(PDO::FETCH_ASSOC); var_dump($like_count); echo $like_count['count']; die(); А вот результат array(1) { [0]=> array(1) { ["COUNT(*)"]=> string(1) "1" } } Warning: Undefined array key "count" in D:\OSPanel\domains\iscok\ilan incele.php on line 35
Mля, уже «десять раз» обсудили! Будете заниматься махинациями и в этом разделе, тоже перестану помогать --- Добавлено --- Про отсутствие имени count уже молчу.
Я видел,никаким махинация я не занимаюсь не неси пургу.В моем коде там есть пробеол а тут так получилось я хз, PHP: $like_count = $connect->prepare("SELECT COUNT(*) FROM liked_content WHERE ilan_id=?"); $like_count->execute([$id]); $like_count = $like_count->fetchall(PDO::FETCH_ASSOC); var_dump($like_count); echo $like_count['count']; die(); --- Добавлено --- Мне не нужно помогать,80% ваших ответов на мои комментарии это хрень какая то,вы пишете что да как исправить,но говорите словно так будто я уже 5 лет в php,я новичок,я не пойму на вашем языке. Сверху Aleksandr.B очень даже внятно объяснил и даже показал пример кода. Вы написали непонятную для вещь и угрожаете,что не будете помогать,ну это же смешно --- Добавлено --- Вместо fetchall я прописал просто fetch и массив стал немного красивей что ли но ошибка не исчезла. Данные с ключом 'count' все равное не видит вот код PHP: //запрос на колич лайков записи $like_count = $connect->prepare("SELECT COUNT(*) FROM liked_content WHERE ilan_id=?"); $like_count->execute([$id]); $like_count = $like_count->fetch(PDO::FETCH_ASSOC); var_dump($like_count); echo $like_count['count']; die(); А вот ошибка array(1) { ["COUNT(*)"]=> string(1) "2" } Warning: Undefined array key "count" in D:\OSPanel\domains\is
Поздравляю. Дошло Дошло, да не все --- Добавлено --- Если с count никак не доходит, можно использовать мой вариант с list($count) =
Вместо fetchall я прописал просто fetch и массив стал немного красивей что ли но ошибка не исче Да,до меня трудно донести информация на сложно для меня языке,я только изучаю,мне просто надо поменять название ключа в запросе что ли? --- Добавлено --- Где это юзать вообще в самом запросе вначале что ли или где
Выше был более развернутый пример. Только не надо бездумно копипастить $stm --- Добавлено --- И будем считать, что обработка ошибок уже выполнена. Писал об этом:
вы это имели введу? PHP: //запрос на колич лайков записи $like_count = $connect->prepare("SELECT COUNT(*) count FROM liked_content WHERE ilan_id=?"); $like_count->execute([$id]); $like_count = $like_count->fetch(PDO::FETCH_ASSOC); --- Добавлено --- Помогло это. Нужно обращать внимания на запросы тоже(это я себе и новичкам) Поставил мишке лаек за исправление ошибки,хоть объясняет на инопрешеленском )
@ilya45, для получения одного значения из выборки (sql-запроса) в PDOStatement есть метод fetchColumn. Кроме того, если не желаете прописывать псевдонимы получаемым в запросе значениям - их можно получить по номерам "столбцов" (индексам массива от 0 и далее). Подробнее: PHP: PDOStatement::fetch - Manual (в описании параметра mode)