1

使用 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().我已经在网上搜索过,但找不到确凿的答案。任何帮助将不胜感激。

阿曼达

4

5 回答 5

2

您可以使用 === 检查

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';
    }
}
于 2011-07-19T12:50:40.813 回答
1

mysql_query()将返回false错误,否则返回结果资源。 mysql_num_rows()如果你发送它会抛出一个警告false,所以你需要确定查询是否仍然有效

$result = mysql_query($query);
if ($result === false) {
   //handle error
}
else if (mysql_num_rows($result)) {
   //handle rows
}
else {
   //handle no rows
}
于 2011-07-19T12:54:33.380 回答
1
$res=mysql_query('smth');
if(mysql_error()){//error
}
else{//correct, you can check mysql_num_rows
}
于 2011-07-19T12:49:15.387 回答
0
if(mysql_num_rows($result) != 0){
    #I have results so process
} else{ 
    echo 'No such user';
}
于 2011-07-19T12:49:12.660 回答
0

您可以使用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
}
于 2011-07-19T12:59:09.303 回答