用MySQLi制作PHP菜单子菜单系统
我正在尝试用php和MySQLi制作菜单子菜单。 我有这张桌子: 我有以下php代码:用MySQLi制作PHP菜单子菜单系统,php,mysql,menu,mysqli,submenu,Php,Mysql,Menu,Mysqli,Submenu,我正在尝试用php和MySQLi制作菜单子菜单。 我有这张桌子: 我有以下php代码: function my_menu($parent_id=0){ $connection = mysql_connect("localhost","root","root"); mysql_select_db("a_personality",$connection); $query = mysql_query("SELECT * FROM categor
function my_menu($parent_id=0){
$connection = mysql_connect("localhost","root","root");
mysql_select_db("a_personality",$connection);
$query = mysql_query("SELECT * FROM categories WHERE parent_id = {$parent_id}");
if(mysql_num_rows($query)){
echo "<ul>";
while($res = mysql_fetch_assoc($query)){
echo "<li>";
echo $res['name'];
dispay_menu($res['cat_id']);
echo "</li>";
}
echo "</ul>";
}
}
功能我的菜单($parent\u id=0){
$connection=mysql_connect(“localhost”、“root”、“root”);
mysql_select_db(“a_personality”,$connection);
$query=mysql\u query(“从父级\u id={$parent\u id}的类别中选择*);
if(mysql_num_行($query)){
回声“”;
而($res=mysql\u fetch\u assoc($query)){
回声“- ”;
echo$res['name'];
显示菜单($res['cat_id');
回声“
”;
}
回声“
”;
}
}
但我必须用MySQLi来写,我做到了:
function dispay_menu($mysqli_conn,$parent_id=0){
$query = $mysqli_conn->prepare("SELECT cat_id,name,parent_id FROM categories WHERE parent_id = ?");
$query->bind_param('i',$parent_id);
$query->execute();
$query->bind_result($cat_id_db,$name_db,$parent_id_db);
if($query->num_rows){
echo "<ul>";
while($query->fetch()){
echo "<li>";
echo $name_db;
echo "<script>alert('".$parent_id_db."');</script>";
dispay_menu($mysqli_conn,$parent_id_db);
echo "</li>";
}
echo "</ul>";
}
}
函数显示菜单($mysqli\u conn,$parent\u id=0){
$query=$mysqli\u conn->prepare(“从父对象id=?”的类别中选择类别id、名称、父对象id”);
$query->bind_参数('i',$parent_id);
$query->execute();
$query->bind_result($cat_id_db、$name_db、$parent_id_db);
如果($query->num\u行){
回声“”;
而($query->fetch()){
回声“- ”;
echo$name_db;
回显“警报('''.$parent_id_db.');”;
显示菜单($mysqli\u conn,$parent\u id\u db);
回声“
”;
}
回声“
”;
}
}
使用mysqli调用的函数如下:dispay\u菜单($mysqli\u conn)强>
问题是我的mysqli功能不起作用,有什么问题
比你强 更换
dispay_menu($mysqli_conn,$parent_id_db);
与
当前,您总是使用父id调用子菜单
0
您认为它“不工作”是什么意思。有错误吗?任何警告?此函数显示菜单中未定义以下变量:$cat\u id\u db、$name\u db、$parent\u id\u db。这就是为什么,可能您的函数没有得到正确执行。您可以在此函数中定义这些变量,也可以将它们作为参数传递给此函数。如果我删除if($query->num_rows)此I get错误致命错误:在C:\xampp\htdocs\…@KanishkDudeja中对非对象调用成员函数bind_param(),这些变量由mysqli_stmt::bind_result()创建
如果$query
不是对象,则添加echo$mysqli\u conn->错误代码>在$mysqli_conn->prepare()之后代码>调用。再次不起作用:(如果我删除if($query->num_行),我会得到错误和致命错误:调用C:\xampp\htdocs中非对象上的成员函数bind_param()。。。。
dispay_menu($mysqli_conn,$cat_id_db);