将值从MySql传递到PHP。如何避免NULL值

时间:2018-06-06 15:55:38

标签: php mysql null associative-array

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

MySql表由两个字段组成:
第一个称为“类别”,另一个称为“父”。

但我还需要指定一些“子类别”,例如:

类别:MEN,WOMEN,BOYS,GIRLS
子类别:衬衫,裤子,鞋子,饰品

所以我想通过在表中实现“父”字段来解决问题,以便:

如果父= 0,则表示它是主要类别(MEN,WOMEN,BOYS,GIRLS)

如果parent = 1,则表示它是子类别,因此它是MEN'S SHIRT
如果parent = 1,则表示它是子类别,因此它是MEN'S PANTS
如果parent = 1,则表示它是子类别,因此它是MEN'S SHOES
如果parent = 1,则表示它是一个子类别,因此它是男士衬衫

如果parent = 2,则表示它是一个子类别,因此它是女性的衬衫 如果parent = 2,则表示它是一个子类别,因此它是女性的裤子 如果parent = 2,则表示它是一个子类别,因此它是女性的鞋子 如果parent = 2,则表示它是一个子类别,因此它是女性的衬衫

...等...

(也许有一种更有效的方式,但这就是我的想法)

现在,如果我像这样设置我的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,我应该得到什么?
正确的输出应为:
衬衫,裤子,鞋子,配饰

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

我三重检查表中的默认值,一切正确,我可以保证100%。我在MySql中直接手动查询并且可以正常运行。

所以我仔细检查了第一行,通过回显它的变量:

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

但我得到 NULL 值!
我认为这就是为什么我会选择男士,女士,男孩,女孩衬衫,裤子,鞋子,配饰
也许它们是默认值(?)。

在线检查似乎发生了这种情况,因为它是一个关联对象数组,应该转换为字符串数组。我试过了:

var_dump ($child['category']);

但未发生变化: NULL

任何人都可以帮助我吗?
我不知道如何解决这样的困境! :)
非常感谢你提前!

1 个答案:

答案 0 :(得分:0)

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

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