2010-03-12 87 views
0

這裏的錯誤是代碼:讓我的foreach循環

<?php 

//Starting session 

session_start(); 

//Includes mass includes containing all the files needed to execute the full script 
//Also shows homepage elements without customs 

require_once ('includes/mass.php'); 

$username = $_SESSION['username']; 

if (isset($username)) 

{ 

//Query database for the users networths 

$sq_l = "SELECT * FROM user ORDER BY worth"; 

$sql_query_worth = mysql_query($sq_l); 

while ($row = mysql_fetch_assoc($sql_query_worth)) 

     { 

     $dbusername = $row['username']; 

     $dbworth = $row['worth']; 

      foreach ($dbusername as $dbuser) 

       { 
        echo ". USER: ".$dbuser." Has a networth of: ".$dbworth; 

       } 
     }    
} 

?> 

有三種結果。這裏是錯誤。

以下是錯誤消息:

警告:(c)中提供的foreach參數無效:\ XAMPP \ htdocs中\ Mogul公司\上線richlist.php 32

警告:無效參數提供爲的foreach ()在C:\ XAMPP \ htdocs中\ Mogul公司\上線richlist.php 32

警告:在C的foreach()提供參數無效:\ XAMPP \ htdocs中\ Mogul公司\ richlist.php在線路32

+1

看來'$ dbusername'不是一個數組。 – Gumbo 2010-03-12 16:51:08

+0

那是什麼「foreach」?是不是'$ dbusername''一個字符串? – kennytm 2010-03-12 16:51:57

+0

你想完成什麼?錯誤信息很清楚,循環沒有任何意義。 – 2010-03-12 16:52:15

回答

3

那是因爲你沒有將數組傳遞給foreach循環。試試這個:

while ($row = mysql_fetch_assoc($sql_query_worth)) 
{ 
    $dbusername = $row['username']; 
    $dbworth = $row['worth']; 
    echo "USER: ".$dbusername ." Has a networth of: ".$dbworth;    
} 
5

只需更改:

 foreach ($dbusername as $dbuser) 

      { 
       echo ". USER: ".$dbuser." Has a networth of: ".$dbworth; 

      } 

到:

echo ". USER: ".$dbusername." Has a networth of: ".$dbworth; 
0

您正在試圖通過像數組的字符串迭代 - 的foreach需要陣列()輸入

1

foreach()遍歷數組。最有可能的是$dbusername是一個字符串,這意味着你應該擺脫foreach(),而只是直接回顯$dbusername

0

不需要您的foreach循環;這應該更好工作:

while ($row = mysql_fetch_assoc($sql_query_worth)) 
{ 
    $dbusername = $row['username']; 
    $dbworth = $row['worth']; 
    // The username is in $dbusername 
    // And the worth is in $dbworth 
    // So, just use those : 
    echo ". USER: ".$dbusername." Has a networth of: ".$dbworth;  
} 


Bascially:

  • mysql_fetch_assoc當前行的數據取入$row
  • 這意味着$row是一個數組,包含usernameworth
  • 您正在將這兩個數組項的值分配到$dbusername$dbworth
    • 現在包含字符串
    • ,可以直接使用:它們不包含任何的子陣列。


如果你想獲得更好的看看你的變量包含,你可以使用print_r,或var_dump;例如,像這樣:

while ($row = mysql_fetch_assoc($sql_query_worth)) 
{ 
    var_dump($row;) 
    $dbusername = $row['username']; 
    $dbworth = $row['worth']; 
    var_dump($dbusername, $dbworth); 
    echo ". USER: ".$dbusername." Has a networth of: ".$dbworth;  
} 
0

爲什麼你需要那裏的foreach?那不是一個數組。你應該在foreach之外做這件事。

echo ". USER: ".$dbuser." Has a networth of: ".$dbworth;

0

您錯誤地調用foreach。它期望一個數組作爲第一個參數。在這種情況下,只需刪除foreach,因爲您已經有一個while循環遍歷數據庫查詢結果。