Возможный дубликат:
Как я «эхо» «Идентификатор ресурса №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 при ошибке.