带有foreach循环的PHP mysqli查询结果回显

带有foreach循环的PHP mysqli查询结果回显,php,html,mysqli,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

在我的上一个项目中,我使用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 ?>

有人能编辑我的代码,让它像以前一样工作吗?

这样会更容易使用

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

与其在所有行中循环并构建一个数组。

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

$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;
        }
    }
}
为什么要访问循环外部的$行,如果要打印每一行,可以在循环内部执行:

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

如果您执行以下操作,您需要“打印”数据的哪一部分?您可能已经“专门化”了结果集,将行删除为仅使用一行

$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);
现在,您可以从页面中的任何位置访问结果,例如html h1中的echo:

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

首先,if条件应该是if$result->num_rows>0,并从while loop中删除foreach谢谢通知,但我希望能够再次这样回显结果:,我记得我使用了foreach循环来实现这一点,但我忘了如何实现:不知道以前的代码做了什么,也不知道数据库表的结构,这几乎是不可能帮助你的。在while循环中,你可以以$row->mydata的形式访问数据我知道,但我是在循环外访问它的,就像这样$r->mydata我想在循环外访问它,因为我需要它,创建一个社交网络:我只是查看了你的编辑,您正在遍历所有结果,并用一行接一行重复覆盖$r。结果将只剩下$r中的最后一行,这是一种非常低效的实现方法$rows=$result->fetch\u allMYSQLI\u ASSOC$r=$rows[count$rows-1]将在更少的cpu周期内完成完全相同的事情对于否决票来说很抱歉,但你的答案是荒谬的,你在所有的行中进行双循环,你所做的一切就是在$rSo中存储的最后一行。我试图使用上面的代码检查一个数据库中的记录,然后在每一行中插入另一个数据库中的记录。但出于某种奇怪的原因,没有错误,也没有插入。当我将结果回显到显示的页面上时。那么我做错了什么呢。
<h1>My name is: <?php echo $r->name ?></h1>