4

我有一个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;
}

4

3 回答 3

6

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

避免麻烦,不要一起使用 mysql_fetch_assoc 和 foreach 。

于 2012-07-23T22:57:35.450 回答
2

因为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'] 
}

来源:

Devshed:PHP foreach/while mysql 结果?

于 2015-02-17T22:23:30.860 回答
1

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

$res = $mysqli->query($sql);
$rows = $res->fetch_all(MYSQLI_ASSOC);
foreach ($rows as $id => $rowData) {
    //do something with $rowData
}
于 2020-10-02T13:33:19.883 回答