在我的上一个项目中,我使用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 ?>
任何人都可以编辑我的代码,以便它像以前一样工作吗?
答案 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>