Как мне пройти через массив PHP, содержащий данные, возвращаемые из MySQL? - PullRequest
2 голосов
/ 25 апреля 2009

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

    • имя пользователя: bob
    • пароль: боб
    • отчет: 1
    • имя пользователя: 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];

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

Ответы [ 6 ]

10 голосов
/ 25 апреля 2009

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

while ($row = mysql_fetch_row($result))
{
    // code
}
2 голосов
/ 25 апреля 2009

Используйте цикл и используйте 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"];
}
0 голосов
/ 25 апреля 2009

$ 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>";

 }

}

0 голосов
/ 25 апреля 2009

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

</p> <pre><code><?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 ?>

0 голосов
/ 25 апреля 2009

Вы также можете получить количество всех строк в таблице следующим образом:


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

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

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

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

Edit: Есть какая-то ошибка или что-то в этом роде, когда мой второй блок кода не показывает все, как только он будет опубликован. Хорошо показывает на превью.

0 голосов
/ 25 апреля 2009

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

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

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

Как сказал htw

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...