Почему это возвращает идентификатор ресурса №2?

Возможный дубликат:
Как я «эхо» «Идентификатор ресурса №6» из ответа MySql в PHP?

Я новичок в php и SQL, и я пытаюсь сделать список php-страниц числом enries в таблице. Я использую этот код, но он возвращает Resource id # 2:

$rt=mysql_query("SELECT COUNT(*) FROM persons"); echo mysql_error(); echo "<h1>Number:</h1>".$rt; 

Потому что вы получаете mysql ressource, когда вы используете mysql_query() .

Используйте что-то вроде mysql_fetch_assoc() чтобы получить следующую строку. Он возвращает массив с именами столбцов в качестве индексов. В вашем случае это, вероятно, COUNT(*) .

Вот исправление и некоторые незначительные улучшения вашего фрагмента:

 $rt = mysql_query("SELECT COUNT(*) FROM persons") or die(mysql_error()); $row = mysql_fetch_row($rt); if($row) echo "<h1>Number:</h1>" . $row[0]; 

Если вам нужно, чтобы все строки набора результатов использовали этот фрагмент:

 while($row = mysql_fetch_assoc($rt)) { var_dump($row); } 

Попробуй это:

 $rt=mysql_query("SELECT COUNT(*) FROM persons"); echo mysql_error(); $count = mysql_result($rt, 0, 0); echo $count; 

В PHP ресурсы возвращаются из определенных функций, чтобы они могли быть переданы другим связанным функциям. Примеры включают подключения к базе данных, результаты запросов к базе данных, дескрипторы файлов и т. Д.

Согласно документации по mysql_query() запрос SELECT возвращает ресурс. Вы можете взять этот ресурс и передать его нескольким различным функциям. Чтобы получить подсчет строк, вы можете использовать mysql_num_rows() , чтобы получить результаты запроса, вы можете использовать mysql_fetch_array() , mysql_fetch_assoc() или mysql_fetch_object() .

Обычный шаблон для работы с результатами базы данных будет выглядеть примерно так:

 $result = mysql_query("SELECT * FROM persons"); // run query against database $count = mysql_num_rows($result); // retrieve a count of the rows in the previous query while ($row = mysql_fetch_assoc($result)) { // loop through all the rows in the resultset // use $row['column_name'] to access columns in your resultset } 

Из приведенного выше примера:

 $result = mysql_query("SELECT COUNT(*) AS num FROM persons"); // run query against db $row = mysql_fetch_assoc($result); // retrieve the 1 (and only) row $count = $row['num']; // we needed to alias the COUNT(*) column as `num` 

mysql_query() не возвращает значение, он возвращает ресурс (см. здесь в руководстве).

Возвращенный результирующий ресурс должен быть передан другой функции для обработки таблиц результатов (например, mysql_fetch_array () или mysql_fetch_assoc () ) для доступа к возвращенным данным.

Пример, основанный на исходном коде:

 $rt=mysql_query("SELECT COUNT(*) FROM persons"); while($row = mysql_fetch_assoc($rt)) { var_dump($row); } 

mysql_query возвращает объект ресурса. Сначала вам нужно получить строки из них ( mysql_fetch_row ).

Прямо от PHP.net …….

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

Из документации по mysql_query :

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