function procLogin($username,$password){
$query = "SELECT *
FROM members
WHERE login = '".mysql_escape_string($username)."'
AND passwd = '".mysql_escape_string($password)."'";
$result = mysql_query($query);
//$values = array();
while($row = mysql_fetch_array($result))
{
return 'gg';
return(array($row['member_id']));
}
}
无法获取userlevel字段......也无法获取任何内容......
答案 0 :(得分:4)
不确定您的问题究竟是什么,但有一个问题是您在此循环中return
:
while($row = mysql_fetch_array($result))
{
return 'gg';
return(array($row['member_id']));
}
事实上,你在循环中返回两次 ...所以procLogin()
函数将始终返回值“gg”,除非你的SQL出现问题查询。
通常,您应该避免在任何循环中使用return
语句,因为它会造成混淆,并可能导致意外结果。
答案 1 :(得分:1)
返回(阵列($行[ 'member_id']));
看起来不对 - 它应该是:
返回($行[ 'member_id']);
您不需要在返回中定义数组。
你也使用mysql_fetch_array()作为数字索引返回 - 你可能想要的函数是mysql_fetch_assoc,它更好用,因为它返回值作为列名而不是数字索引。
这又是一些整洁的事情:
function procLogin($username,$password){
$query = "SELECT *
FROM members
WHERE login = '".mysql_escape_string($username)."'
AND passwd = '".mysql_escape_string($password)."'";
$result = mysql_query($query);
$row = mysql_fetch_assoc($result);
if ($row['member_id'] > 0)
{
return ($row['member_id']);
}
else
{
return false;
}
}
答案 2 :(得分:1)
我在想,根据你对userlevel的评论,你想要返回整个数组而不仅仅是member_id?以下是对Meep3D上述答案的轻微修改:
function procLogin($username,$password){
$query = "SELECT *
FROM members
WHERE login = '".mysql_escape_string($username)."'
AND passwd = '".mysql_escape_string($password)."'";
$result = mysql_query($query);
$row = mysql_fetch_assoc($result);
if (mysql_num_rows($result) > 0)
{
$row = mysql_fetch_assoc($result);
return $row;
}
else
{
return false;
}
}
这应该返回所有表列的数组,如果您正在寻找用户级别,可能您应该能够访问它:
$loginInfo = procLogin("theband","password1");
//if ($loginInfo) or something similar here
$level = $loginInfo['userlevel'];
答案 3 :(得分:0)
你还得到什么回报吗?也就是说,它是否真的进入了while循环?
我会在mysql_query调用后直接使用mysql_error()函数调用,看看那里是否有任何错误。
例如,可能没有连接。
答案 4 :(得分:0)
你还有问题吗?如果是这样的话,请尝试以下方法:
echo $query;
定义查询后,将其复制+粘贴到phpmyadmin中,检查数据库中是否有任何有效的返回。
之后尝试放置:
if (mysql_error())
{
trigger_error ("MySQL Error: ". mysql_error(), E_USER_ERROR);
}
在你调用mysql_query之后。如果有人向您提供错误的详细信息,则应该触发错误。