php
  • mysql
  • 2009-08-18 57 views 6 likes 
    6

    我试图创建一个函数,它将返回一个mysql查询,然后我可以循环并处理结果,但它似乎没有工作。我甚至可能不会以正确的方式做这件事。创建一个php函数返回mysql结果

    function GetAccounts($username){ 
    require("dbconn.php"); 
    $result = mysql_query("SELECT * FROM `accounts` WHERE `username` = '$username' ") or trigger_error(mysql_error()); 
    return "$result"; 
    } 
    
    $result = GetAccounts($username); 
    while($row = mysql_fetch_array($result)){ 
    foreach($row AS $key => $value) { $row[$key] = stripslashes($value); } 
    $theusername = $row['theusername']; 
    $thepassword = $row['thepassword']; 
    echo $theusername; 
    } 
    

    我收到的错误是

    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource 
    

    我尝试了所有的上述装入功能,但只能得到它每次返回一个结果。由于生病需要处理每个结果,我“认为”上述方式是我想要做到这一点,但让我知道是否有更好的方法,或者我做错了什么。

    当我用用户名回显功能,我得到以下;

    Resource id #5 
    

    回答

    9

    删除链接变量$result的双引号。

    function GetAccounts($username){ 
        require("dbconn.php"); 
        $result = mysql_query("SELECT * FROM `accounts` WHERE `username` = '$username' ") or trigger_error(mysql_error()); 
        return $result; 
    } 
    
    +0

    它工作得很好,谢谢。到底发生了什么?为什么引用结果变量搞砸了? – mrpatg 2009-08-18 06:58:40

    +2

    请参阅下面的Tom的回答。因为使用双引号表示$ result被转换为字符串。 – Pete 2009-08-18 07:01:50

    9

    双引号把$result意味着它将被转换为字符串,然后不再型“资源”的。试试看:

    return $result; 
    
    +2

    +1,谢谢你的解释 – Pete 2009-08-18 07:03:29

    相关问题