[英]Cannot retrieve name from Users database (mysql) using PHP
我正在尝试显示"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) { }
通过更改它们,它就像一种魅力一样,为所有人欢呼!
奇怪的是,您正在使用mysql_num_rows
来获取查询结果。 这只会返回行数。 使用mysql_fetch_assoc
获得结果的关联数组会更好。
您还需要将反引号更改为查询中{$username}
周围的单引号。
就像是:
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;
}
您的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[]
。 count()
检查$real
是否$real
空。 更改此行$row = mysql_fetch_array($query);
我看到两个问题。
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
末尾删除了[]
。
使用mysql_query()获取运行查询的结果,然后使用mysql_fetch_assoc()获取单个行。
$result = mysql_query($query);
while ($row = mysql_fetch_assoc($result))
{
var_dump($row);
}
注意,mysql_num_rows($ result)将返回给定结果中的行数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.