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