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

将值从MySql传递到PHP。如何避免空值,php,mysql,null,associative-array,Php,Mysql,Null,Associative Array,我想通过使用MySql值在PHP中动态填充网站菜单 MySql表由两个字段组成: 第一个称为“类别”,另一个称为“父级” 但我还需要指定一些“子类别”,如: 类别:男人、女人、男孩、女孩 子类别:衬衫、裤子、鞋子、配件 所以我想通过在表中实现一个“parent”字段来解决这个问题,以便: 如果parent=0,则表示这是一个主要类别(男性、女性、男孩、女孩) 如果parent=1,则表示它是一个子类别,因此是男式衬衫 如果parent=1,则表示它是一个子类别,因此它是男式裤子 如果parent

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

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

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

类别:男人、女人、男孩、女孩
子类别:衬衫、裤子、鞋子、配件

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

如果parent=0,则表示这是一个主要类别(男性、女性、男孩、女孩)

如果parent=1,则表示它是一个子类别,因此是男式衬衫
如果parent=1,则表示它是一个子类别,因此它是男式裤子
如果parent=1,则表示它是一个子类别,因此是男鞋
如果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;
$parent_arr_id = $parent_arr['id'];
var_dump($parent_arr_id);
在我的MySql数据库中有parent=1,我应该得到什么
正确的输出应该是:
衬衫、裤子、鞋子、配饰

相反,我得到:
男人、女人、男孩、女孩

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

因此,我仔细检查了第一行,通过重复其变量,如下所示:

$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;
$parent_arr_id = $parent_arr['id'];
var_dump($parent_arr_id);
但是我得到了一个NULL
我想这就是为什么我得到了
男人、女人、男孩、女孩而不是
衬衫、裤子、鞋子、配饰
可能是默认值(?)

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

var_dump ($child['category']);
但是没有什么变化:NULL

有人能帮我吗
我不知道如何解决这样的困境!:)

提前非常感谢

问题解决了。这只是因为我没有把$sign放在变量名($parent\u arr\u id)之前。应该是:


$sql=“从父类=$parent\u arr\u id”的类别中选择*

SELECT*来自parent=1的类别
$sql=“SELECT*来自parent='parent\u arr\u id'”的类别
首先,如果
$parent\u arr\u id
是一个整数,请删除
'
,因为它们仅用于字符串。。其次,查询中的
$parent\u arr\u id
中缺少
$
。。。第三,此查询容易受到注入攻击,因此我建议您使用Thank you@IsThisJavascript作为答案。我应用了你建议的更正。我得到以下错误:警告:mysqli_fetch_assoc()期望参数1是mysqli_result,布尔值given@PaulSpiegel我想动态填充菜单。我不想静态地传递值。谢谢。当然你会得到那个错误。不要把代码放在评论中,编辑你的问题并把代码放在那里。关键是要在到达mysqi_fetch_assoc之前找出var包含的内容,以便找出sql失败的原因。