在PHP中向未定义的索引数组添加值

时间:2015-03-19 19:20:53

标签: php arrays database-connection

我正在通过创建一个完全基于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++;
}

1 个答案:

答案 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);
?>