Как мне пройти через массив PHP, содержащий данные, возвращаемые из MySQL?

Хорошо, у меня есть таблица с несколькими полями. Одним из полей является username . Существует много раз, когда username совпадает, например:

    • имя пользователя: bob
    • пароль: bob
    • доклад: 1
    • имя пользователя: bob
    • пароль: bob
    • доклад: 2

Я сделал инструкцию SQL, чтобы select * where username='bob'; но когда я выполняю следующую функцию PHP, она вернет только последний результат:

 $thisrow = mysql_fetch_row($result); 

Мне нужно получить каждое поле из каждой строки. Как мне это сделать?

 $mainsection="auth"; //The name of the table $query1="select * from auth where username='$user'"; $result = mysql_db_query($dbname, $query1) or die("Failed Query of " . $query1); //do the query $thisrow=mysql_fetch_row($result); echo "Study: " . $thisrow[1] . " - " . $thisrow[5]; основная $mainsection="auth"; //The name of the table $query1="select * from auth where username='$user'"; $result = mysql_db_query($dbname, $query1) or die("Failed Query of " . $query1); //do the query $thisrow=mysql_fetch_row($result); echo "Study: " . $thisrow[1] . " - " . $thisrow[5]; 

Извините за такой немой вопрос. Кажется, я не могу получить петли из более чем одного поля, работающего на жизнь меня.

Solutions Collecting From Web of "Как мне пройти через массив PHP, содержащий данные, возвращаемые из MySQL?"

mysql_fetch_row выбирает каждую строку по одному. Чтобы получить несколько строк, вы должны использовать цикл while следующим образом:

 while ($row = mysql_fetch_row($result)) { // code } 

Используйте цикл и используйте mysql_fetch_array() вместо строки:

 while($row = mysql_fetch_array($result)) { echo "Study: " . $row[1] . " - " . $row[5]; // but now with mysql_fetch_array() you can do this instead of the above // line (substitute userID and username with actual database column names)... echo "Study: " . $row["userID"] . " - " . $row["username"]; } 

Я предлагаю вам прочитать это: http://www.w3schools.com/php/php_mysql_select.asp Он даст вам общее представление о том, как правильно подключиться к mysql, собирать данные и т. Д.

Для вашего вопроса вы должны использовать цикл:

 while ($row = mysql_fetch_row($result)){//code} 

Как сказал htw

Вы также можете получить количество всех строк в таблице, например:

 $count = mysql_fetch_array(mysql_query("SELECT COUNT(*) AS count FROM table")); $count = $count["count"]; 

Вы также можете добавить нормальное предложение WHERE к выбранному выше и только подсчитывать строки, которые соответствуют определенному условию (при необходимости). Затем вы можете использовать свой счет для циклов:

     $ data = mysql_query ("SELECT * WHERE username = 'bob'");
     для ($ i = 0; $ i 

Кроме того, mysql_fetch_array () обычно намного проще в использовании, поскольку он хранит данные в ассоциативном массиве, поэтому вы можете обращаться к данным с именем строки, а не к числовому индексу.

Изменить: есть какая-то ошибка или что-то происходит, когда мой второй блок кода не показывает все, как только оно опубликовано. Это хорошо видно на предварительном просмотре.

Мне нравится отделять логику БД от дисплея. Обычно я помещаю свои результаты в массив, который я могу вызвать в HTML-коде. Чисто личное предпочтение; но вот как бы я подошел к проблеме: (я бы взял $ sql из сообщения об ошибке в процессе производства)

 <?php $sql=" SELECT * FROM auth WHERE username='$user'; "; $result = mysql_query($sql) or die("Failed Query : ".mysql_error() . $sql); //do the query while ($ROW = mysql_fetch_array($result,MYSQL_ASSOC)) { $USERS[] = $ROW; } ?> HTML CODE <? foreach ($USERS as $USER) { ?> Study: <?=$USER['dbFieldName'];?> - <?=$USER['dbFieldName2'];?> <? } //foreach $USER ?> 

$ qry = mysql_query (выберите * где username = 'bob');

если (mysql_num_rows ($ QRY))

{

  while($row=mysql_fetch_array($qry,MSQL_NUM)) { echo $row[0]."&nbsp;&nbsp;".$row[1]."&nbsp;&nbsp;".$row[2]."<br>"; } в  while($row=mysql_fetch_array($qry,MSQL_NUM)) { echo $row[0]."&nbsp;&nbsp;".$row[1]."&nbsp;&nbsp;".$row[2]."<br>"; } 

}