Результаты запроса MySQL не являются ресурсом - PullRequest
0 голосов
/ 03 августа 2010

У меня проблемы с запросом в этом коде. Проблема одна из тех, что у меня были раньше, часть $num = mysql_num_rows($result); дает мне ошибку MySQL, говорящую о том, что ожидался ресурс. Обычно, когда у меня возникает эта ошибка, это происходит потому, что я не помещаю одну кавычку где-то, но после поиска я не могу найти никаких проблем, хотя этот запрос немного сложнее, чем то, с чем мне обычно приходится иметь дело.

//connect to the database and stuff

$last_year = idate("Y")-1;
$month = date("m");
$day = date("d");                                   

$query = "SELECT bills.b_id, bills.c_id, bills.grand_total, bills.void, bills.date_added,
                 customers.b_name, customers.l_name, customers.f_name, customers.phone 
          FROM bills, customers 
          WHERE bills.c_id = customers.c_id 
                AND bills.void = '0' 
                AND date_added BETWEEN '".$last_year."-".$month."-".$day."' AND CURDATE()";
$result = mysql_query($query);
mysql_close($link);                 
$num = mysql_num_rows($result);

EDIT:

Хотя я уже знаю, что функция mysql_close() не является проблемой, я пошел дальше и удалил ее, и мой код все еще не работает. Этот EXACT такой же код (кроме запроса) работает почти на дюжине других страниц. Проблема в запросе , ошибка MySQL (как указано выше) mysql_num_rows() expects parameter 1 to be resource. Сейчас я работаю над получением конкретной ошибки.

Ответы [ 5 ]

1 голос
/ 03 августа 2010
  1. Проверьте, не было ли ошибок mysql. Если у вас еще не включен отчет об ошибках, включите его для разработки (error_reporting(E_ALL);).

  2. Попробуйте подождать, чтобы закрыть соединение mysql, пока не закончите с наборами результатов.

1 голос
/ 03 августа 2010

Добавьте некоторую обработку ошибок в ваш код.

$result = mysql_query($query);
if ( !$result ) {
  echo 'the query failed: ', mysql_error();
  die;
}

(в «реальном» рабочем коде вы, возможно, не захотите отображать фактический запрос и сообщение об ошибке любому произвольному пользователю).

см. Также: http://docs.php.net/mysql_error

0 голосов
/ 03 августа 2010

ошибка «не ресурс» означает, что ваш запрос не выполнен.
измените ваш запрос mysql_query таким образом

$result = mysql_query($query) or trigger_error(mysql_error().$query);

и посмотрите, что не так с вашим запросом.
всегда делайте такподдерживать связь с любой возможной ошибкой

0 голосов
/ 03 августа 2010

Вы закрываете ссылку на mysql перед получением результатов запроса.Это проблема.Только не используйте mysql_close (), поскольку PHP может автоматически с этим справиться.

0 голосов
/ 03 августа 2010

Попробуйте с функцией mysql_close () в конце.Если вы закроете соединение mysql, mysql_num_rows () не будет работать

$num = mysql_num_rows($result);
.
.
//Any others mysql operations
.
.
mysql_close($link);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...