无法在数据库中输出所有数组行

时间:2015-10-07 19:44:14

标签: php mysql arrays

问题:只能从每个数组中输出一个字段

 <?php
    error_reporting(0);
    session_start();
    include('connect.php');
    ob_start();

    $category = array(
        "dates" => array(),
        "paragraphs" => array(),
        "titles" => array()
    );

    if ($result = $mysqli->query("SELECT * FROM tips")){
        if($result->num_rows){
            while($row = $result->fetch_array(MYSQLI_ASSOC)){
            //printf ("%s %s %s\n",$row["date"], $row["title"], $row["paragraph"]); 
            $dates= array($row["date"]);
            $titles = array($row["title"]);
            $paragraphs = array($row["paragraph"]);
            }
            }
            $result->free();
        }

    ?>

我希望首先显示数组中的最后一个,以便我使用此

<?php echo $titles[count($titles)-1]?>

我认为问题在于我的循环,我认为每次循环时它都会重新分配数组

2 个答案:

答案 0 :(得分:3)

while的每次迭代都会在您的变量中创建一个新数组,第一个位置存储当前行数据迭代。

每次都覆盖最后一次,不要$data = array($row['data'])而是$data[] = $row['data']

这样,您可以将每次迭代的值推送到数组的新索引中。

答案 1 :(得分:1)

您没有正确地向$category数组添加值:

while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
   $category['dates'][] = $row["date"];
   $category['titles'][] = $row["title"];
   $category['paragraphs'][] = $row["paragraph"];
}

现在,使用$dates= array($row["date"])等,您只需将值一次又一次地分配给相同的(从未声明的)$dates变量。