NibA_NibA Ответов: 2

Как решить проблему создания динамической строки меню и подменю с помощью PHP и MYSQL?


У меня небольшая проблема. пожалуйста, помогите мне решить эту проблему.

мой код отображает эту ошибку:
( ! ) Fatal error: Call to a member function fetch_array() on a non-object on line 44

это мой код.:
<?php
$dbcon=mysql_connect("localhost","root","");
$link = mysql_connect('localhost','test',''); 
if (!$link) { 
	die('Could not connect to MySQL: ' . mysql_error()); 
} 
echo 'Connection OK'; mysql_close($link); 
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>front page</title>
<script type="text/javascript"  src="jquery-3.4.1.min.map"></script>
<link rel="stylesheet" type="text/css" href="style.css" media="all" />
</head>
<body>
<div id="head">
<div class="wrap"><br />
<h1 align="center">Create your own Menu Bar</h1>
<label><a href="add_menu.php">Click to Add Menu</a></label>
</div>
</div>

<div class="wrap">
<ul id="nav">
<li><a href="#">Homepage</a></li>
<?php
$res=$dbcon->query("SELECT * FROM main_menu");
while($row=$res->fetch_array())
{
 ?>
 <li><a href="<?php echo $row['m_menu_link']; ?>"><?php echo $row['m_menu_name']; ?></a>
 <?php
 $res_pro=$dbcon->query("SELECT * FROM sub_menu WHERE m_menu_id=".$row['m_menu_id']);
 ?>
        <ul>    
  <?php  
  while($pro_row=$res_pro->fetch_array())
  {
   ?><li><a href="<?php echo $pro_row['s_menu_link']; ?>"><?php echo $pro_row['s_menu_name']; ?></a></li><?php
  }
  ?>
 </ul>
 </li> 
 
<?php
}
?>
</ul> 
</div>
<script type="text/javascript">
$(document).ready(function() 
{
 $('#nav li').hover(function() 
 {
  $('ul', this).slideDown('fast');
 }, function() 
 {
  $('ul', this).slideUp('fast');
 });
});
</script>
</body>
</html>


Что я уже пробовал:

это дает мне ошибку в этом:
while($row = $res->fetch_array())

2 Ответов

Рейтинг:
2

Kris Lantz

Я мало знаю о PHP, но главный ответ здесь может быть полезен. Вполне возможно, что $dbcon был объявлен неправильно. Ошибка PHP и MYSQLI, вызов функции-члена query() при переполнении стека без объекта[^]


NibA_NibA

я решил эту проблему. теперь это дает мне новую ошибку:

Фатальная ошибка: вызов функции-члена fetch_array() на не-объекте в строке 44
вот строка 44

while($row = $res->fetch_array())

Kris Lantz

Откуда $res извлекает массив? Не принести возьми парам?

Рейтинг:
2

MadMyche

Похоже, вы смешиваете API MySql и/или стили, которые несовместимы друг с другом.

Это использование старого в MySQL ИНТЕРФЕЙС ПРИКЛАДНОГО ПРОГРАММИРОВАНИЯ: $dbcon=mysql_connect("localhost","root","");
В то время как это, по-видимому, либо в MySQLя или ПДО while($row = $res->fetch_array())

Я не мастер ни MySql, ни PHP... так что вам, возможно, придется провести некоторые дальнейшие исследования. Я бы рекомендовал вам ознакомиться с этими ссылками:
PHP: выбор API - руководства[^]
РНР: mysqli_result::fetch_array - инструкция[^]