使用foreach而不是while循环来循环mysql_fetch_assoc


Loop mysql_fetch_assoc using foreach instead of a while loop

我有一个mysql查询:

$result = mysql_query("my query");

有没有办法让这样的东西发挥作用?

$results = mysql_fetch_assoc($result); // fetch the results

并使用foreach而不是经典while循环它们:

foreach($results as $result){
   $result1 = $result->result1;
   $result2 = $result->result2;
}

Ty

Foreach是一个迭代数组和对象的构造。mysql_fetch_assoc将返回一个数组,但每个数组将仅为一行的数据。因此,您的foreach将简单地为您提供第一行中的列。

不要将mysql_fetch_assoc和foreach一起使用,以免遇到麻烦。

因为mysql_fetch_assoc一次只返回一行,所以使用它将PHP结果集转换为PHP数组。然后,对数组使用foreach。

例如:

while ($row = mysql_fetch_assoc($result)) { 
     $rows[] = $row; 
} 
foreach($rows as $row) {
    //Then do something for each row, for e.g.:
    if ($row['col_name'] == 'somevalue'){
        $arrList[] = $row['id'];
    }
}

或者:

while ($row = mysql_fetch_assoc($result)) { 
     $rows[] = $row; 
} 
foreach($rows as $row) { 
     foreach($row as $field => $value) { 
          //do something with $field and $val 
     }
}

或者:

while ($row = mysql_fetch_assoc($result)) { 
     $rows[] = $row; 
} 
for($i=0;$i<count($rows);$i++) { 
     //do something with $rows[$i]['field_name'] 
}

来源:

开发:PHP foreach/而mysql结果?

不要使用mysql(已弃用),而是使用mysqli。

$res = $mysqli->query($sql);
$rows = $res->fetch_all(MYSQLI_ASSOC);
foreach ($rows as $id => $rowData) {
    //do something with $rowData
}