Используя mysql_num_rows (), как мне узнать, вернул ли myql_query () результат 0 или ошибку sql в php - PullRequest
1 голос
/ 19 июля 2011

Используя 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(). Я искал в Интернете и не могу найти окончательный ответ. Любая помощь будет принята с благодарностью.

Amanda

Ответы [ 5 ]

2 голосов
/ 19 июля 2011

Вы можете проверить, используя ===

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';
    }
}
1 голос
/ 19 июля 2011

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
}
1 голос
/ 19 июля 2011
$res=mysql_query('smth');
if(mysql_error()){//error
}
else{//correct, you can check mysql_num_rows
}
0 голосов
/ 19 июля 2011

Вы можете использовать Типизированные операторы сравнения PHP , чтобы различать 0 и ложь.Таким образом, ваш тест станет:

$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
}
0 голосов
/ 19 июля 2011
if(mysql_num_rows($result) != 0){
    #I have results so process
} else{ 
    echo 'No such user';
}
...