使用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
}