我有一个mysql查询:
$result = mysql_query("my query");
有没有办法制作像这样的作品?
$results = mysql_fetch_assoc($result); // fetch the results
使用foreach而不是经典循环它们:
foreach($results as $result){
$result1 = $result->result1;
$result2 = $result->result2;
}
泰
答案 0 :(得分:3)
Foreach是一个迭代数组和对象的构造。 mysql_fetch_assoc
将返回一个数组,但每个数组只有一行的数据。因此,您的foreach将简单地为您提供第一行中的列。
免于麻烦,不要一起使用mysql_fetch_assoc和foreach。
答案 1 :(得分:1)
因为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']
}
来源:
答案 2 :(得分:0)
请勿使用mysql(已弃用),而应使用mysqli。
$res = $mysqli->query($sql);
$rows = $res->fetch_all(MYSQLI_ASSOC);
foreach ($rows as $id => $rowData) {
//do something with $rowData
}