以下是代码:
<?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;
}
}
}
?>
有三个结果。这是错误。
这是错误消息:
警告:第32行的C:\ xampp \ htdocs \ Mogul \ richlist.php中为foreach()提供的参数无效
警告:第32行的C:\ xampp \ htdocs \ Mogul \ richlist.php中为foreach()提供的参数无效
警告:第32行的C:\ xampp \ htdocs \ Mogul \ richlist.php中为foreach()提供的参数无效
答案 0 :(得分:5)
只需改变:
foreach ($dbusername as $dbuser)
{
echo ". USER: ".$dbuser." Has a networth of: ".$dbworth;
}
到:
echo ". USER: ".$dbusername." Has a networth of: ".$dbworth;
答案 1 :(得分:3)
那是因为你没有将数组传递给foreach循环。试试这个:
while ($row = mysql_fetch_assoc($sql_query_worth))
{
$dbusername = $row['username'];
$dbworth = $row['worth'];
echo "USER: ".$dbusername ." Has a networth of: ".$dbworth;
}
答案 2 :(得分:1)
foreach()
遍历数组。最有可能$dbusername
是一个字符串,这意味着您应该删除foreach()
并直接回复$dbusername
。
答案 3 :(得分:0)
您正在尝试迭代像数组一样的字符串 - foreach需要array()输入
答案 4 :(得分: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;
}
基本上:
mysql_fetch_assoc
将当前行的数据提取到$row
$row
是一个数组,其中包含username
和worth
键$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;
}
答案 5 :(得分:0)
为什么你需要那里的foreach?那不是阵列。你应该把它放在foreach之外。
echo ". USER: ".$dbuser." Has a networth of: ".$dbworth;
答案 6 :(得分:0)
您正在正确呼叫foreach
。它期望一个数组作为第一个参数。在这种情况下,只需删除foreach,因为您已经有一个while循环迭代数据库查询结果。