使用函数从数据库构建导航


Using a function to build a Navigation from Database

我试图建立一个函数,使我能够建立一个简单的导航(或列表,事实上)从数据库表。

问题是,在括号中的变量不工作,我怎么能解决这个问题?

function buildNav($DbRow, $DbName) {
  $nav_qry = "SELECT $DbRow FROM $DbName WHERE 1";
  $nav_res = mysqli_query($con, $nav_qry);
    echo "<ul>";
  while ($row = mysqli_fetch_assoc($nav_res)) {
    echo "<li id='" . $row[$DbRow] . "'><a href='?id=" . $row[$DbRow] . "' class='nav-point'>". $row[$DbRow] ."</a></li>";
  }
  echo "</ul>";
}

谢谢!

不需要对db进行新的连接。只需这样添加全局变量:

function buildNav($DbRow, $DbName) {
    global $con;
    //...your sql code goes here
}

见http://php.net/manual/en/language.variables.scope.php

我假设您已经检查了$nav_res是否已经有行。所以,我建议你试试下面的代码,看看它是否有什么不同。

while ($row = mysqli_fetch_assoc($nav_res)) { ?>
    <li id='<?php echo $row[$DbRow] ?>'><a href='?id=<?php echo $row[$DbRow] ?>' class='nav-point'><?php echo $row[$DbRow] ?></a></li>
<?php
  }
?>

问题是,函数不能访问前面在文档中定义的$con变量,所以如果它在函数中,整个事情就可以工作。

function buildNav($DbRow, $DbName) {
  $con = mysqli_connect('host', 'user', 'password', 'database');
  $nav_qry = "SELECT $DbRow FROM $DbName WHERE 1";
  $nav_res = mysqli_query($con, $nav_qry);
    echo "<ul>";
  while ($row = mysqli_fetch_assoc($nav_res)) {
    echo "<li id='" . $row['title'] . "'><a href='?id=" . $row['title'] . "' class='nav-point'>". $row['title'] ."</a></li>";
      }
  echo "</ul>";
}