Intereting Posts
В PHP, как отображать содержимое массива в таблице PHP: Заменить название города Как загрузить XML, когда PHP не может указать правильную кодировку? Как получить имя столбца, значение которого не равно null в mysql Каков правильный способ использования Guzzle 6 для создания пула асинхронных запросов json для отправки конечным точкам API? Разделить входную строку в PHP на несколько частей без разрыва слов Получить данные на основе входа пользователя в рюкзак laravel Отправить несколько текстовых полей в массиве в PHP Минимальный тайм-аут запроса MySQL MySQL должен установить ограничение до 10 активировать активную запись codeigniter и запрашивать запрос без предложения LIMIT Почему оператор конкатенации строки php является точкой (.)? Использование jQuery в шаблоне php Symfony2 PHP: удалить файл с любым расширением? Слияние по значению массива (и выполнение расчетов с другими ключами) Перенос файлов с локального компьютера на удаленный сервер с помощью php-скрипта, находящегося на удаленном сервере

MySQL PHP count (*) возвращает что-то странное

Я запускаю следующий запрос, ожидая, что он вернет INTEGER, но он возвращает «Идентификатор ресурса № 3»,
Что я делаю не так?

$queryPlans = mysql_query("SELECT count(*) FROM infostash.rooms"); echo $queryPlans; 

В этой таблице всего 15 строк, и я хотел бы вернуть номер 15. Любые предложения?

Тебе нужно:

 $queryPlans = mysql_query("SELECT count(*) FROM infostash.rooms"); $row = mysql_fetch_array($queryPlans); echo $row[0]; 

mysql_query() не возвращает результат. Он возвращает ресурс, с которым вы можете перебирать и опросить строки (как указано выше).

mysql_query вернет ресурс php (см .: http://www.php.net/manual/en/language.types.resource.php ).

Возвращенный ресурс затем должен быть передан в mysql_fetch_assoc или аналогичный.

Поскольку вы получаете только счет, вы можете использовать следующее:

 $queryPlans = mysql_query("SELECT count(*) FROM infostash.rooms"); $count = mysql_result($queryPlans,0,0); echo $count; 

Это действительно ожидаемое поведение в соответствии с документацией:

Для SELECT, SHOW, DESCRIBE, EXPLAIN и других операторов, возвращающих набор результатов, mysql_query () возвращает ресурс с успехом или FALSE при ошибке.

Это регулярный выбор, который возвращает одну строку с одним столбцом и должен рассматриваться как таковой. Вы можете вызвать mysql_fetch_array на результат:

 $row = mysql_fetch_array($resource); $count = $row[0]; 

mysql_query () возвращает ресурс результата . Вам нужна другая функция, чтобы получить «ценную информацию» с этого ресурса. В этом случае mysql_fetch_array () / mysql_fetch_row () / mysql_fetch_object, как указал cletus. Или (поскольку это только одно значение) mysql_result () .
Любой SQL-запрос может завершиться по различным причинам. Вы всегда должны проверить возвращаемое значение mysql_query (). Если это FALSE, что-то пошло не так, и mysql_error () может рассказать вам больше об этом.

 $mysql = mysql_connect(...) or die(mysql_error()); mysql_selecT_db(.., $mysql) or die(mysql_error($mysql)); $query = "SELECT count(*) FROM infostash.rooms"; $queryPlans = mysql_query($query, $mysql) or die(mysql_error($mysql)); $cRows = mysql_result($queryPlans, 0); echo $cRows; 

Если вы планируете позже использовать полный запрос (например, select , а не count ( )), вы можете сэкономить себе mysql_num_rows() базы данных, используя mysql_num_rows() в полном запросе. Пример:

 $queryPlans = mysql_query("SELECT * FROM infostash.rooms"); $results = mysql_fetch_array($queryPlans); echo "There were " . mysql_num_rows($queryPlans) . " results"; while($row = mysql_fetch_assoc($queryPlans)){ // Do stuff here } 

$ queryPlans = mysql_query ("SELECT count (*) FROM infostash.rooms"); mysql_num_rows ($ queryPlans);

http://us.php.net/manual/en/function.mysql-num-rows.php