sql — количество элементов в массиве
Я пытаюсь посчитать элементы в массиве, но это не работает, как задумано:
У меня есть цикл while, который проходит по моей пользовательской таблице:
while($refsData=$refs->fetch())< $new_array = array($refsData['id']); print_r($new_array); $outcome = $rentedrefs->_paying($new_array); >
print_r($new_array); дает мне:
Array ( [0] => 90427 ) Array ( [0] => 90428 ) Array ( [0] => 90429 ) Array ( [0] => 90430 ) Array ( [0] => 90431 ) Array ( [0] => 90432 ) Array ( [0] => 90433 ) Array ( [0] => 90434 ) Array ( [0] => 90435 ) Array ( [0] => 90436 )
Внутри _paying Функция, я считаю количество значений из массива:
function _paying($referrals_array)
Проблема в том, что выше count($referrals_array); просто дает мне: 1 когда это должно быть 10
Решение
Вы создаете новый массив на каждом этапе цикла. Вместо этого это должно быть написано так:
$new_array = array(); while($refsData=$refs->fetch()) < $new_array[] = $refsData['id']; // print_r($new_array); >$outcome = $rentedrefs->_paying($new_array);
Обратите внимание, что я переместил _paying вызов вне цикла, так как это выглядит как функция агрегирования. Если нет, то вы, скорее всего, сделаете это $refsData[‘id’] вместо этого — не весь массив.
В качестве идентификатора, я настоятельно рекомендую использовать fetchAll () метод (вместо выборки, когда вам нужно заполнить коллекцию результатами запроса. Подсчет числа полученного массива будет тривиальным.
Другие решения
Он работает правильно, в каждом цикле цикла у вас есть один массив, поэтому сначала у вас есть:
Должно работать правильно:
var $count = 0; while($refsData=$refs->fetch())< $new_array = array($refsData['id']); $count += count($new_array); $outcome = $rentedrefs->_paying($new_array); >
Вы создаете $new_array как новый массив с единственным элементом $refsData[‘id’] , Таким образом, счет 1 является правильным.
Чтобы получить количество результатов, либо используйте COUNT(*) выберите запросить ваш sql сервер или добавьте счетчик в ваш цикл, например так:
$entries = 0; while($refsData=$refs->fetch())< $new_array = array($refsData['id']); print_r($new_array); $entries++; $outcome = $rentedrefs->_paying($new_array); > echo $entries;
Вы не добавляете элементы в массив, но создаете новый массив каждую итерацию. Чтобы добавить элементы, просто сделайте:
Как вывести с помощью PHP — количество записей из SQL-таблицы(базы) на html страницу?
Уважаемые знатоки!
Столкнулся с проблемой — там, где ее совсем не ожидал..
Мне нужно с помощью PHP — вывести количество записей из SQL-таблицы(базы) на html страницу.
Думал дело пустяковое, однако бьюсь уже 2-е сутки, и все безрезультатно..
Что делал и как рассуждал:
Первым делом написал SQL-запрос, и проверил его работоспособность непосредственно в СУБД SQL:
SELECT COUNT(*) FROM `items_table` WHERE id_category = '1'
Имею вполне логичный результат: COUNT(*) = 5 (записей входящих в категорию с )
Запрос, рабочий и я решаю двинуться дальше..
Далее, пишу функцию, собственно «Получения количества записей (Items)»:
function get_count_items($id_category)
И вызываю ее на странице index.php:
//вызываю функцию с параметром id-категории
И далее, что я только не делал, для того, что бы вывести эту цифру (количества записей (Items)):
Результат: Array записей
Результат: Array записей (тоже самое)
Тут я надеялся обратится как к 1-му (0-вому) элементу массива — но тоже фиаско..
Варианты вывода (3) (без echo):
Результат: записей (пустота в место цифры)
Варианты вывода (4) (с помощью var_dump):
array(1) < [0]=>array(1) < ["COUNT(*)"]=>string(1) "5" >> записей
Да, в конце этого вывода — действительно выводится актуальное количество Записей в нужной категории.
Но как вывести просто цифру (без доп. информации)??
Пробовал также на стороне функции возвращать не переменную, а массив:
function get_count_items($id_category)< global $connect_sql; $sql = "SELECT COUNT(*) FROM `my_php_blog`.`items_table` WHERE id_category = $id_category"; $result = mysqli_query($connect_sql, $sql); $count_items_return = mysqli_fetch_all($result, 1); return $count_items_return[0]; >
Однако результат — пустой: . записей
То ли лыжи не едут, то ли что то я не понимаю.
Как же сделать вывод вида: «5 записей» на странице?
Простой 13 комментариев