我正在通过创建一个完全基于php和动态数据库内容的网页来学习php。在下面的代码片段中,我查询mainMenu表中的导航链接数量,并将链接标题和网址返回到各自的数组。但是,代码被破坏,网页无法加载。我几乎100%肯定这是我声明数组的方式,或者我试图将数据从数据库传递到数组的方式,但经过一些研究我无法弄明白。
include('config.php');
$urls = array();
$navs = array();
$num = 1;
$conn = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
if ($conn->connect_error) {
//die("Connection failed: " . $conn->connect_error);
die("Connection failed");
}
if ($result = $conn->query("SELECT * FROM mainMenu")) {
/* determine number of rows result set */
$row_cnt = $result->num_rows;
/* close result set */
//$result->close();
}
while ($num <= $row_cnt) {
$sqli = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
if ($sqli->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
//Site Title
$sql = "SELECT title,url FROM mainMenu WHERE navID=" . $num;
$result = $sqli->query($sql);
while($row = $result->fetch_assoc()) {
$navs[$num] = $row["title"];
$urls[$num] = $row["url"];
}
$sqli->close();
$num++;
}
答案 0 :(得分:0)
在查看已发布然后删除的答案后,这似乎是解决方案。
<?php
include('config.php');
$urls = array(); // you shouldn't do "new array()", this is javascript
$navs = array();
$num = 1;
$conn = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
if ($conn->connect_error) {
//die("Connection failed: " . $conn->connect_error);
die("Connection failed");
}
if ($result = $conn->query("SELECT * FROM mainMenu")) {
/* determine number of rows result set */
$row_cnt = $result->num_rows;
/* close result set */
//$result->close();
}
while ($num <= $row_cnt) {
//Site Title
$sql = "SELECT title,url FROM mainMenu WHERE navID=" . $num;
$result = $conn->query($sql);
while($row = $result->fetch_assoc()) {
if(!isset($navs[$num])) { $navs[$num] = array(); } // do this to define the index before using it
if(!isset($urls[$num])) { $urls[$num] = array(); }
$navs[$num] = $row["title"];
$urls[$num] = $row["url"];
}
$num++;
}
$conn->close();
define('urlArray', $urls);
printf($urls);
?>