我试图建立一个函数,使我能够建立一个简单的导航(或列表,事实上)从数据库表。
问题是,在括号中的变量不工作,我怎么能解决这个问题?
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>";
}