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().Webを検索したので、決定的な答えが見つかりません。どんな助けでも大歓迎です。

アマンダ

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
$res=mysql_query('smth');
if(mysql_error()){//error
}
else{//correct, you can check mysql_num_rows
}
于 2011-07-19T12:49:15.387 に答える
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 に答える
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 に答える