2013-05-05 5 views
0

Я пытаюсь проверить, возвращает ли значение mysql-запроса false или фактически содержит значение. Мое первое решение, которое работало должным образом выглядел следующим образом:mysql_num_rows не работает должным образом

$gotTrailer = mysql_query("SELECT trailer FROM film_backup WHERE id='".key($countValues)."'"); 
    $iHasTrailer = mysql_fetch_array($gotTrailer); 
    while(mysql_num_rows($gotTrailer)==''){ 
     next($countValues); 
     $gotTrailer = mysql_query("SELECT trailer FROM film_backup WHERE id='".key($countValues)."'"); 
     $iHasTrailer = mysql_fetch_array($gotTrailer); 
    } 

Это действительно некрасиво решение, поэтому я попытался с помощью mysql_num_rows() вместо того, чтобы:

$gotTrailer = mysql_query("SELECT trailer FROM film_backup WHERE id='".key($countValues)."'"); 
    while(mysql_num_rows($gotTrailer)==0){ 
     next($countValues); 
     $gotTrailer = mysql_query("SELECT trailer FROM film_backup WHERE id='".key($countValues)."'"); 
    } 

Но по какой-то причине, это просто не будет Работа. Я тоже пытался использовать === false, но я не знаю, что случилось. Надеюсь, ты поможешь.

+0

$ countValues ​​был сброшен() эд перед всем этим? можете ли вы объяснить немного больше? – 2013-05-05 00:43:49

+1

Ваша проблема в использовании 'mysql_', а не' PDO'. –

ответ

1

mysql_query() вернет false только в случае ошибки. Если запрос возвращает пустой результат, он все равно возвращает ресурс (не false, empty или 0).

mysql_fetch_array() вернет false, если строк больше нет, иначе вам будет возвращен массив.

В этом случае эти методы были устаревшими.

Ресурсы: http://php.net/manual/en/function.mysql-query.php

http://www.php.net/manual/en/function.mysql-fetch-array.php

+0

Я думаю, проблема заключается в том, что все строки в базе данных содержат трейлер значений, только некоторые из них содержат пустую строку. Благодарю. – Amnestic

0

mysql_query возвращает ложь об ошибке. Если вы хотите проверить, есть ли ошибка в запросе или нет, вы должны проверить возвращаемое значение этой функции.

Теперь, если вы хотите проверить, есть ли результат или нет, mysql_num_rows вернет> = 0 или false при ошибке. Таким образом, ваше время должно быть

while((mysql_num_rows($gotTrailer) !== false)){ 

Помимо всего этого, код имеет и другие недостатки, следующий() может возвращать ложь и mysql_query и не будет работать, также, помнить, чтобы избежать запросов, чтобы избежать инъекции SQL.

0

Вы можете попробовать с For Loop а

$gotTrailer = mysql_query("SELECT trailer FROM film_backup WHERE id='".key($countValues)."'"); 

    for($i=0; $i<mysql_num_rows($gotTrailer); $i++) 
    { 
     next($countValues); 
     $gotTrailer = mysql_query("SELECT trailer FROM film_backup WHERE id='".key($countValues)."'"); 
    }