2009-04-24 48 views
2

好吧,我有一個幾個領域的表。其中一個領域是username。有很多次,其中username是一樣的,例如:如何循環包含從MySQL返回的數據的PHP數組?

    • 用戶名:鮑勃
    • 密碼:鮑勃
    • 報告:1
    • 用戶名:鮑勃
    • 密碼:鮑勃
    • 報告: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循環爲我的生活工作。

+1

當心SQL注入與$用戶的。使用mysql_real_escape_string($ text)來確保特殊字符被轉義。此外,mysql_fetch_assoc($ result)會爲您提供一個命名數組 - 即$ thisrow ['name_of_database_field'] - 從長遠來看,使用起來更容易。 – ceejayoz 2009-04-24 21:48:15

回答

10

mysql_fetch_row一次獲取每行一個。爲了檢索多個行,你可以使用一個while循環是這樣的:

while ($row = mysql_fetch_row($result)) 
{ 
    // code 
} 
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"]; 
} 
0

我建議你閱讀本: http://www.w3schools.com/php/php_mysql_select.asp 它會給你一個如何正確連接到mysql,收集數據等的概述想法

對於你的問題,你應該使用一個循環:

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

至於說通過HTW

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()通常是一個容易得多關聯數組使用,因爲它存儲數據,這樣你就可以與該行的名稱來訪問數據,而比它的數字索引。

編輯: 有某種錯誤或一些事情,即一旦它張貼了我的第二個代碼塊沒有顯示一切。它在預覽中顯示得很好。

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

0

$ QRY =請求mysql_query(選擇*其中username =「鮑勃」 );

如果(mysql_num_rows($ QRY))

{

while($row=mysql_fetch_array($qry,MSQL_NUM)) 

{ 

     echo $row[0]."&nbsp;&nbsp;".$row[1]."&nbsp;&nbsp;".$row[2]."<br>"; 

} 

}