如何遍历包含从MySQL返回的数据的PHP数组?

时间:2009-04-24 21:42:33

标签: php sql loops

好的,我有一个包含几个字段的表格。其中一个字段是username。很多时候username是相同的,例如:

    • 用户名:bob
    • 密码:bob
    • 报告:1
    • 用户名:bob
    • 密码:bob
    • 报告:2
  1. 我向select * where username='bob';做了一个SQL语句但是当我执行以下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 个答案:

答案 0 :(得分:10)

mysql_fetch_row一次提取一行。要检索多行,您可以使用while循环,如下所示:

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

答案 1 :(得分:2)

使用循环,并使用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"];
}

答案 2 :(得分:0)

我建议你这样读: http://www.w3schools.com/php/php_mysql_select.asp 它将为您提供如何正确连接到mysql,收集数据等的概述

对于你的问题,你应该使用一个循环:

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

如htw所说

答案 3 :(得分:0)

您还可以获取表格中所有行的计数:


    $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()通常更容易使用,因为它将数据存储在关联数组中,因此您可以使用行的名称而不是数字索引来访问数据。

编辑: 有一些错误或某些事情发生在我的第二个代码块一旦发布就没有显示所有内容的地方。它在预览中显示正常。

答案 4 :(得分:0)

我喜欢将DB逻辑与显示分开。我通常把我的结果放到一个我可以在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 ?>

<?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 ?>

答案 5 :(得分:0)

$ qry = mysql_query(select * where 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>";

 }

}