mysql_query () - FALSE, но mysql_error () - пустой - PullRequest
1 голос
/ 17 августа 2011

Я выполняю довольно сложный запрос, который построен из нескольких внутренних запросов.Запрос содержал SQL_CALC_FOUND_ROWS в начале.К сожалению, можно извлечь только количество строк (я не смог получить результат сам).

Я решил избавиться от SQL_CALC_FOUND_ROWS и выполнить два разных запроса, один для подсчета строк, а второй для их выборки.В этом случае я могу получить результаты, но запрос COUNT (*) работает странно.Вот что я делаю:

  1. Выполнить запрос COUNT (*)
  2. mysql_query () возвращает FALSE
  3. mysql_error (), запущенный непосредственно после запроса COUNT (*)возвращает пустую строку

Код:

$sqlCount = "SELECT COUNT(*) AS c FROM ... WHERE ...";
$resultCount = mysql_query($sqlCount);
echo "RESULT COUNT: " . ($resultCount === FALSE) . "<br />";//it returns 1(true)
echo mysql_error(); //it returns nothing (blank string)

ДОПОЛНИТЕЛЬНО mysql_errno () возвращает 0

Не могли бы вы найти какое-либо разумное объяснениетакая странная ситуация?

Ответы [ 3 ]

0 голосов
/ 17 августа 2011

Это странно, потому что предложение select с SQL_CALC_FOUND_ROWS возвращает строки, а дополнительный запрос возвращает количество строк. Если вы используете

$result = mysql_query('SELECT SQL_CALC_FOUND_ROWS * from table');
$total = mysql_query('SELECT FOUND_ROWS()');
process $result.

проблем не должно быть.

0 голосов
/ 17 августа 2011

Не могли бы вы заполнить ... пробелы и попробовать

<code><?php
error_reporting(E_ALL);
ini_set('display_errors', true);

$mysql = mysql_query('..', '..', '..') or die(mysql_error());
mysql_select_db('...', $mysql) or die(mysql_error($mysql));

echo '<pre>Debug: mysql_get_server_info='; var_dump(mysql_get_server_info($mysql)); echo "
\ n "; echo '
Debug: mysql_get_client_info='; var_dump(mysql_get_client_info()); echo "
\ n";$ sqlCount = "ВЫБЕРИТЕ СЧЕТЧИК (*) КАК С ... ГДЕ ...";echo '
Debug: sqlCount='; var_dump($sqlCount); echo "
\ n "; $ resultCount = mysql_query ($ sqlCount, $ mysql); echo'
Debug: resultCount='; var_dump($resultCount); echo "
\ n";echo '
Debug: mysql_error='; var_dump(mysql_error($mysql)); echo "
\ n "; echo'
Debug: mysql_errno='; var_dump(mysql_errno($mysql)); echo "
\ n";

и выложить вывод?

0 голосов
/ 17 августа 2011

Я не вижу ошибок в вашем коде. Пожалуйста, попробуйте изменить строку mysql_query на

 $resultCount = mysql_query($sqlCount) or die(mysql_error() ." <-- There was an error when proccessing query");

Это выглядит странно, но может помочь вам

...