php
2009-07-08 100 views 0 likes 
0
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'])); 
     } 



} 

无法得到用户级领域....也不什么....PHP登录返回值

回答

1

return(array($ row ['member_id']));

看起来错误 - 它应该是:

回报($行[ 'member_id']);

你不应该像这样在返回中定义数组。

您还使用mysql_fetch_array()作为数字索引返回 - 您可能需要的函数是mysql_fetch_assoc,它可以更好地工作,因为它以键名作为列名而不是数字索引返回值。

这里有几个整洁UPS再次就是这样:

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; 
    } 
} 
+0

尽管用户级别具有当前检查用户的值,但我将返回值设置为false。 – Kevin 2009-07-08 19:14:51

4

不知道你的问题是什么,但有一个问题是,你return从荷兰国际集团这个while循环中:

while($row = mysql_fetch_array($result)) 
{ 
    return 'gg'; 
    return(array($row['member_id'])); 
} 

事实上,你回来从环路内连续两次 ...这样的procLogin()函数总是返回的“GG”的值,除非不顺心的事与你的SQL查询。

通常,您应该避免在任何循环中使用return语句,因为它会造成混淆并可能导致意外的结果。

+0

在一个while循环中也没有意义。一个简单的如果在$行的价值就足够了。 – MitMaro 2009-07-08 18:46:07

+0

如何在没有while循环的情况下获取用户级别 – Kevin 2009-07-08 19:04:30

0

那么你会得到什么回报?也就是说,它是否真的进入了while循环?

我会在mysql_query调用后直接使用mysql_error()函数来查看是否有错误。例如,

也许没有建立连接。

1

我根据你对用户级的意见以为,要返回整个阵列,而不是仅仅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']; 
+0

我不需要整个信息,只需要检查当前用户的用户级别。此外,您的代码也会返回false ... – Kevin 2009-07-08 20:11:13

0

你还有问题吗?如果是这样的尝试是这样的:

echo $query; 

您定义查询后,再复制+粘贴到phpMyAdmin来检查是否有从数据库中任何有效的回报。

试图在放置后:

if (mysql_error()) 
{ 
    trigger_error ("MySQL Error: ". mysql_error(), E_USER_ERROR); 
} 

刚过你打电话的mysql_query。如果有人给你提供错误的详细信息,这应该会引发错误。

相关问题