Передача значений из MySql в PHP.Как избежать значения NULL - PullRequest
0 голосов
/ 06 июня 2018

Я хочу динамически заполнять меню веб-сайта в PHP, используя значения MySql.

Таблица MySql состоит из двух полей:
Первое называется «категория», другое - «родительский».

Но мне также необходимо указать некоторые »подкатегории ", например:

Категории : МУЖЧИНЫ, ЖЕНЩИНЫ, МАЛЬЧИКИ, ДЕВОЧКИ
Подкатегории : РУБАШКИ, БРЮКИ, ОБУВЬ, АКСЕССУАРЫ

Поэтому я решил решить эту проблему, внедрив в таблицу «родительское» поле так:

, если parent = 0, это означает, что это основная категория (MEN, WOMEN, BOYS, GIRLS)

если parent = 1, это означает, что это подкатегория, следовательно, это MEN'S SHIRT
, если parent = 1, это означает, что это подкатегория, следовательно, это MEN'S PANTS
, если parent = 1, это означаетчто это подкатегория, поэтому это MEN'S SHOES
, если parent = 1, это означает, что это подкатегория, следовательно, это MEN'S SHIRT

, если parent = 2, это означает, что это подкатегория, поэтомуэто ЖЕНСКАЯ РУБАШКА
если parent = 2, это означает, что это подкатегория, поэтому яt ЖЕНСКИЕ БРЮКИ
если родитель = 2, это означает, что это подкатегория, следовательно, это ЖЕНСКАЯ ОБУВЬ
если родитель = 2, это означает, что это подкатегория, поэтому это ЖЕНСКАЯ РУБАШКА

... ETC ...

(может быть, есть более эффективный способ, но я так об этом думал)

Теперь, если я установлю свой код PHP следующим образом:

$parent_arr_id = $parent_arr['id'];
$sql = "SELECT * FROM categories WHERE parent ='parent_arr_id'";
$query_child = $db->query($sql);
while($child = mysqli_fetch_assoc($query_child)) :
echo $child['category'];
endwhile;

с родителем = 1 в моей базе данных MySql, что я должен получить?
Правильный вывод должен быть:
Рубашки, брюки, обувь, аксессуары .

Вместо этого я получаю:
Мужчины, женщины, мальчики, девочки

Я трижды проверил значения по умолчанию в таблице, все правильно, могу гарантировать 100%.
Я вручную делал запросы непосредственно в MySql, и он работает.

Поэтому я тщательно проверил первую строку, отобразив ее переменную следующим образом:

$parent_arr_id = $parent_arr['id'];
var_dump($parent_arr_id);

Но я получаю NULL значение!
Я думаю, именно поэтому я получаю
мужчин, женщин, мальчиков, девочек insted из
рубашки, брюки, обувь, аксессуары .
Может быть, они являются значениями по умолчанию (?).

При онлайн-проверке кажется, что это происходит, потому что это массив ассоциативных объектов, и его следует преобразовать в массив строк.Я пытался:

var_dump ($child['category']);

, но ничего не изменилось: NULL

Может кто-нибудь, пожалуйста, помогите мне?
Понятия не имею, как решить такую ​​дилемму!:)
Заранее большое спасибо!

1 Ответ

0 голосов
/ 13 июня 2018

Проблема решена.Просто потому, что я не ставил знак $ перед именем переменной ($ parent_arr_id).Это должно было быть:

$ sql = "ВЫБРАТЬ * ИЗ КАТЕГОРИЙ ГДЕ parent = $ parent_arr_id";

...