Я запускаю следующий запрос, ожидая, что он вернет 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);