使用mysql_num_rows(),我如何判断myql_query()在php中返回的结果是0还是sql错误?



使用php,我明白,false是相同的0,所以当检查我的选择查询结果,如果我有0结果mysql_num_rows($result)将评估为false -这我理解,什么将函数评估到,如果我有一个sql错误。

$sqlQuery="SELECT userID, userName, password, role From User WHERE userName=$userName;"
$result=mysql_query($sqlQuery);
if(mysql_num_rows($result)){
    #I have results so process
} else #do I have an error or do I just have no results

我需要从查询返回一个有意义的结果,即。"没有这样的用户"或详细的sql错误,我不希望使用mysql_query($sqlQuery) or die().我已经搜索了网络,找不到一个确凿的答案。任何帮助都将非常感激。

阿曼达

您可以使用===

if(($result = mysql_query('select * from foo')) === false) {
   // mysql error
} else {
   if(mysql_num_rows($result) == 0) echo 'no such user.';
}

或者如果你只是想修改你的代码,你可以这样写:

$sqlQuery="SELECT userID, userName, password, role From User WHERE userName=$userName;"
$result=mysql_query($sqlQuery);
if(mysql_num_rows($result)){
    #I have results so process
} else {
    #do I have an error 
    if($result === false) {
        // mysql error indeed
    #or do I just have no results
    } else { 
        echo 'no such user';
    }
}
$res=mysql_query('smth');
if(mysql_error()){//error
}
else{//correct, you can check mysql_num_rows
}

mysql_query()出错时返回false,否则返回结果资源。如果您发送false, mysql_num_rows()将抛出警告,因此您需要确定查询是否有效

$result = mysql_query($query);
if ($result === false) {
   //handle error
}
else if (mysql_num_rows($result)) {
   //handle rows
}
else {
   //handle no rows
}
if(mysql_num_rows($result) != 0){
    #I have results so process
} else{ 
    echo 'No such user';
}

您可以使用PHP的类型比较操作符来区分0和false。所以你的测试将变成:

$num_rows = mysql_num_rows($result);
if($num_rows > 0){
    #I have results so process
} else if ($num_rows === false) {
    #An error occured: use mysql_error for details
} else {
    #No errors, no results either
}

相关内容

  • 没有找到相关文章

最新更新