У меня есть запрос 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; }
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 eg: 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 result?