PHP mysqli查询结果回显与foreach循环

时间:2014-09-14 15:49:17

标签: php html mysqli

在我的上一个项目中,我使用foreach循环为每个mysqli结果分配一个变量,如$r->mydata,但是我意外地格式化了我的电脑,所以我丢失了我的核心文件,我记不清了我究竟是怎么做到的。我记得我做过这样的事情

$result = $db->query("SELECT * FROM data");
if($result->num_rows){
    while ($row = $result->fetch_object()) {
        foreach ($row as $r){
            $row[] = $r;
        }
    }
}

我可以从while循环外部访问结果,如下所示:

<?php echo $r->mydata ?>

任何人都可以编辑我的代码,以便它像以前一样工作吗?

4 个答案:

答案 0 :(得分:3)

使用起来会更容易

$rows=$result->fetch_all(MYSQLI_ASSOC);

而不是遍历所有行并构建数组。

答案 1 :(得分:0)

也许你不记得你是怎么做到的,但如果你这样做了,你应该至少知道你要采用哪种方法来解决这个问题,让我们先帮助你理解代码:

$result = $db->query("SELECT * FROM data");
if($result->num_rows>0){
    //iterating only if the table is not empty
    while ($row = $result->fetch_object()) {
        //Here you are iterating each row of the database
        foreach ($row as $r){
            //Here you are iterating each column as $r
            //and (trying) adding it again to the $row array
            $row[] = $r;
        }
    }
}

为什么要访问循环外的$row,如果你要做的是打印每一行,你可以在循环中进行:

$result = $db->query("SELECT * FROM data");
if($result->num_rows>0){
    while ($row = $result->fetch_object()) {
        foreach ($row as $r){
            echo $r.'<br>';
        }
    }
}

答案 2 :(得分:0)

如果您执行以下操作,您需要哪些“打印”数据?您可能通过消除行仅仅使用单行来“专门化”结果集......

$result = $db->query("SELECT * FROM data");

$r = new stdClass();

// Only loop if there is a result.
if ($result) 
{
    $r->myData = []; // You aren't exactly clear on 'myData'.  In this instance, I am setting the rows inside of it.
    while ($row = $result->fetch_object())
    {
        $r->myData[] = $row;
    }

    $result->close(); // Free result set
}

print_r($r->myData);

答案 3 :(得分:0)

$records = array();
$result = $db->query("SELECT * FROM data");
if($result->num_rows){
 while ($row = $result->fetch_object()) {
   $records[] = $row;
   foreach($records as $r);
 }  
}

现在您可以从页面中的任何位置访问结果,例如html h1中的echo:

<h1>My name is: <?php echo $r->name ?></h1>