foreach на набор результатов MySQL возвращает только одно значение randomic

Я пытаюсь сделать несколько простых выберите в одном сценарии.

Я вижу, пытаюсь ли я прочитать мой набор результатов какое-то время, но проблем нет, но если я пытаюсь использовать foreach, я просто читаю значение 1 o 2, все неправильно …
Зачем?

$sql = " select * from tutorials_tbl";
$result = mysql_query($sql);
while ($row = mysql_fetch_array($result, MYSQL_BOTH)) {
printf("ID: %s  Name: %s", $row[0], $row[1]);
}$sql = " select * from tutorials_tbl";
$result = mysql_query($sql);
foreach($rows= mysql_fetch_array($result, MYSQL_BOTH) as $row) {
printf("ID: %s  Name: %s", $row[0], $row[1]);
}

* OUTPUT WHILE*

ID: 0 Name: title0
ID: 1 Name: title1

ЕСС ….

*OUTPUT FOREACH*

ID: 1 Name:
ID: 1 Name:
ID: t Name: i
ID: t Name: i

2

Решение

Причина, по которой вы получаете только одну строку с foreach, заключается в том, что функция mysql_fetch_array () возвращает только одну запись.

В цикле while условие, где вызывается функция, переоценивается в каждом цикле. Это потрясающе.

Работа с foreach довольно странная, и я думаю, что mysql_fetch_array () считывает одну запись в виде массива в переменную $ row, а затем выполняет итерацию по каждой COLUMN в записи … другими словами, $ row это всего одна строка, а $ row это одно значение в строке.
Причина, по которой вы видите только одну или две буквы в выводе, заключается в том, что $ row [0] в строке просто дает вам 0-ю букву в строке.

Единственный способ, которым будет работать foreach, — это функция «извлечь все», которая выдает массив массивов. Но вы должны создать это сами … в основном это будет цикл while 🙂

Если вы используете PDO в соответствии с рекомендациями, он поставляется с возможностями fetchAll.

1

Другие решения

$sql = " select * from tutorials_tbl";
$result = mysql_query($sql);
while ($row = mysql_fetch_array($result, MYSQL_BOTH)) {
printf("ID: %s  Name: %s", $row['Attribute-1'], $row['Attribute-2']);
}

foreach($rows= mysql_fetch_array($result, MYSQL_BOTH) as $row)
{
echo $row['Attribute-1'];
echo $row['Attribute-2'];
}

Этот вопрос уже задавался: Используйте mysql_fetch_array () с foreach () вместо while ()
если вы хотите, вы также можете обратиться отсюда. : D

0

Попробуй вот так

 $sql = " select * from tutorials_tbl";
$result = mysql_query($sql);
$rows= mysql_fetch_array($result, MYSQL_BOTH);

foreach($rows as $row){
echo 'ID '. $row->id.' Name '.$row->name;

}
-1
По вопросам рекламы [email protected]