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

3

这是我的代码片段。

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

<?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;
}
?>

如果我没记错的话,这是因为它没有返回任何行。 - user982270
尝试执行 echo 命令,以查看 sanitize($username) 返回了什么。 - mgraph
2个回答

3
你应该将代码分成更多行来处理这些错误或特殊情况。如果发生错误,mysql_query 将返回零到 n 行或错误。因此,返回的 resource 只有在非错误查询时才为真。可以使用它来处理以下情况。

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

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

您可以使用以下内容来确定错误原因(在IT技术方面):
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;
    }

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;

排好序了!我从字段名中去掉了单引号。所以现在代码变成了: return (mysql_result(mysql_query("SELECT COUNT(user_id) FROM users WHERE username = '$username'"), 0) == 1) ? true : false; - user1871201

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接