首页 > 解决方案 > 将值从 MySql 传递到 PHP。如何避免 NULL 值

问题描述

我想通过使用 MySql 值在 PHP 中动态填充网站菜单。

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,则表示它是一个子类别,因此它是 WOMEN'S SHIRT
如果 parent=2,则表示它是一个子类别,因此它是 WOMEN'S PANTS
如果 parent=2,则表示它是一个子类别,因此它是 WOMEN'S SHOES
如果父级=2,表示它是一个子类别,因此它是 WOMEN'S SHIRT

...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;

在我的 MySql DB 中有 parent=1,我应该得到什么?
正确的输出应该是:
Shirts, Pants, Shoes, Accessories

我反而得到:
男人,女人,男孩,女孩

我三次检查了表中的默认值,一切都正确,我可以保证 100%。
我直接在 MySql 中手动进行查询,它可以工作。

所以我仔细检查了第一行,像这样回显它的变量:

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

但我得到一个NULL值!
我想这就是为什么我会购买
男士、女士、男孩、女孩
衬衫、裤子、鞋子、配饰
也许它们是默认值(?)。

网上查了一下好像是这样的,因为它是一个关联对象数组,应该转换成字符串数组。我试过了:

var_dump ($child['category']);

但没有什么变化:NULL

谁能帮帮我吗?
我不知道如何解决这样的困境!:)
非常感谢您提前!

标签: phpmysqlnullassociative-array

解决方案


问题解决了。只是因为我没有将 $ 符号放在变量名 ($parent_arr_id) 之前。它应该是:

$sql = "SELECT * FROM categories WHERE parent =$parent_arr_id";


推荐阅读