Хорошо, у меня есть таблица с несколькими полями. Одним из полей является username
. Существует много раз, когда username
совпадает, например:
Я сделал инструкцию 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];
Извините за такой немой вопрос. Кажется, я не могу получить петли из более чем одного поля, работающего на жизнь меня.
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]." ".$row[1]." ".$row[2]."<br>"; }
вwhile($row=mysql_fetch_array($qry,MSQL_NUM)) { echo $row[0]." ".$row[1]." ".$row[2]."<br>"; }
}