我正在尝试在登录时向我的博客显示"Welcome back, <name>."
。我正在使用php访问数据库,获取$_SESSION['username']
中当前用户名的姓名,然后将其打印回索引。
所以查询数据库的函数是:
function get_full_name($username){
$real = array();
$query = mysql_query("SELECT `name`, `last` FROM `users` WHERE `user` = `{$username}`");
$row = mysql_num_rows($query);
foreach($row as $k => $v)
{
$real[$k] = $v;
}
return $real;
}
然后是html中调用上述函数的部分:
<div id="menu">
<?php
$temp = $_SESSION['username'];
$real[] = get_full_name($temp);
if(isset($_SESSION['username']))
{
echo '<br />'.'Welcome back, '. $real['name'] . '.';
}
?>
</div>
以上代码的输出为:
Welcome back, .
var_dump($ real)给出:
array(1) { [0]=> array(0) { } }
更改为mysql_fectch_assoc之后var_dump($ real):
array(0) { }
通过改变它们,它就像一个魅力,为所有人欢呼!
答案 0 :(得分:2)
奇怪的是,您正在使用mysql_num_rows
来获取查询结果。这只会返回行数。你最好使用mysql_fetch_assoc
来获得结果的关联数组。
您还需要在查询中将{44}的单引号更改为单引号。
类似的东西:
{$username}
答案 1 :(得分:1)
您的get_full_name()
功能应该是这样的:
function get_full_name($username) {
$real = array();
$query = mysql_query("SELECT `name`, `last`
FROM `users`
WHERE `user` = '{$username}'");
if (mysql_num_rows($query)) {
$real = mysql_fetch_assoc($query);
}
return $real;
}
注意:
'{$username}'
而不是`{$username}`
mysql_num_rows()
检查结果是否为空。mysql_fetch_assoc()
检索行。调用该函数:
$temp = $_SESSION['username'];
$real = get_full_name($temp);
if (isset($temp) && count($real)) {
echo '<br />Welcome back, '. $real['name'] . '.';
}
注意:
$real
代替$real[]
。$real
是否为空count()
。答案 2 :(得分:0)
更改此行$row = mysql_fetch_array($query);
答案 3 :(得分:0)
我看到两个问题。
1)您正在使用mysql_num_rows
,而不是从数据库中获取数据数组。
function get_full_name($username){
$real = array();
$query = mysql_query("SELECT `name`, `last` FROM `users` WHERE `user` = `{$username}`");
$row = mysql_fetch_assoc($query);
foreach($row as $k => $v)
{
$real[$k] = $v;
}
return $real;
}
2)看起来$real
是代码中的多维数组。试试这个:
<div id="menu">
<?php
$temp = $_SESSION['username'];
$real = get_full_name($temp);
if(isset($_SESSION['username']))
{
echo '<br />'.'Welcome back, '. $real['name'] . '.';
}
?>
</div>
请注意,我已删除[]
末尾的$real
。
答案 4 :(得分:0)
使用mysql_query()获取运行查询的结果,然后使用mysql_fetch_assoc()获取单个行。
$result = mysql_query($query);
while ($row = mysql_fetch_assoc($result))
{
var_dump($row);
}
请注意,mysql_num_rows($ result)将返回给定结果中的行数。