警告:mysql_result():提供的参数不是第4行(...)中的有效MySQL结果资源

时间:2012-12-02 23:40:43

标签: php mysql function

嗨,大家好奇只是想解决这个恼人的问题。这是我的片段。

我已经检查了一些类似于我的错误的其他问题,但到目前为止我无法解决它。

非常感谢任何帮助。 :)

<?php 
function user_exists ($username) {
$username = sanitize($username);
return (mysql_result(mysql_query("SELECT COUNT(user_id) FROM users WHERE username =  $username"), 0) == 1) ? true : false;
}
?>

2 个答案:

答案 0 :(得分:3)

您应该将代码拆分为更多行以处理这些错误或特殊情况。 mysql_query将返回0到n行,如果发生则返回错误。因此,返回的资源仅在非错误查询时才为真。这可用于处理如下情况。

首先构建并执行查询,然后处理资源

$query="SELECT COUNT(user_id) FROM users WHERE username = ".$username;
$result = mysql_query($query);  

如果发生错误,您可以使用以下内容确定发生了什么:

if(!$result) die("SELECT failed: ".mysql_error());

或这些想法来处理问题

if (!$result=mysql_query($query)) {
        return false; // or similar operation
    }

    if (mysql_num_rows($result)!=1){
        return false;
    }else{
        return true;
    }

答案 1 :(得分:0)

mysql_query返回false时,如果由于某种原因失败,则可能发生这种情况。因此,您应该将其拆分为多个语句并检查返回值

$sql = "SELECT COUNT(user_id) FROM users WHERE username =  $username";
$result = mysql_query($sql);
if ($result === false) {
    // error handling
    return false;
}

return (mysql_result($result, 0) == 1) ? true : false;