@VladFalcone

Почему после загрузки из БД массив не имеет данных?

Здравствуйте!
Я, как сыщик из "Колобков": "ничего не понимаю" ))

Есть простенькая база данных, в которой 5 таблиц. Одна из них содержит 6 строк (ID и Name). Для дальнейшей работы кода мне нужно загрузить эту таблицу в массив. Делаю просто:
<?php
    global $body_part;

    $host = 'localhost'; // адрес сервера
    $database = 'gs_new'; // имя базы данных
    $user = 'root'; // имя пользователя
    $password = ''; // пароль

    $link = mysqli_connect($host, $user, $password, $database); // соединяемся с базой данных

    if (mysqli_connect_errno()) { // проверка соединения
        printf("Не удалось подключиться: %s\n", mysqli_connect_error());
        exit();
    }
    if (!$link->set_charset("utf8")) { // изменение набора символов на utf8
        printf("Ошибка при загрузке набора символов utf8: %s\n", $link->error);
        exit();
    }

    $body_part_query ="SELECT * FROM body_part"; // строка запроса
    $body_result = mysqli_query($link, $body_part_query);

    while ($body_part = mysqli_fetch_array($body_result, MYSQLI_BOTH)) {
        echo "body_part[" . $body_part['Part_ID'] . "] = " . $body_part['Name'] . ", ";
    }
    echo "в массиве body_part " . count($body_part) . " элементов";

    $link->close(); // закрываем БД
?>

Как видите, в коде есть последовательный вывод элементов массива внутри while. Все элементы массива выводятся абсолютно корректно. НО! Результатом функции count является НОЛЬ!

Я, видимо, сильно туплю, но не понимаю почему это так. Из-за этого, например, функция foreach выдает ошибку.
  • Вопрос задан
  • 87 просмотров
Пригласить эксперта
Ответы на вопрос 1
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
$body_part объявлен, как глобальная переменная в первой строке кода.
что еще печальнее, ибо абсолютно бесполезно.
Но как закрепить в $body_part данные, чтобы их потом можно было использовать?

это же массив, присвойте его другой переменной
$some_temp_horroble_namestyling_array = array();
while ($body_part = mysqli_fetch_array($body_result, MYSQLI_BOTH)) {
       $some_temp_horroble_namestyling_array[] = $body_part;
        echo "body_part[" . $body_part['Part_ID'] . "] = " . $body_part['Name'] . ", ";
    }
var_dump($some_temp_horroble_namestyling_array);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы