PHP登录返回值

时间:2009-07-08 18:40:24

标签: php

  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字段......也无法获取任何内容......

5 个答案:

答案 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之后。如果有人向您提供错误的详细信息,则应该触发错误。