我想通过使用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
任何人都可以帮助我吗?
我不知道如何解决这样的困境! :)
非常感谢你提前!
答案 0 :(得分:0)
问题解决了。这只是因为我没有在变量名称($ parent_arr_id)之前放置$符号。应该是:
$ sql =" SELECT * FROM categories WHERE parent = $ parent_arr_id&#34 ;;