2011-01-25 1 views
8

Можно создать дубликат:
How do i “echo” a “Resource id #6” from a MySql response in PHP?Почему это возвращает идентификатор ресурса №2?

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

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

ответ

17

Потому что вы получите 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); 
} 
1

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

1

Прямо из PHP.net .......

"Для ВЫБРАТЬ, SHOW, DESCRIBE, EXPLAIN и другие операторы возвращения результирующего набора, mysql_query() возвращает ресурс при успехе, FALSE при ошибке."

1

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

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

2

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

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

Пример на основе вашего исходного кода:

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

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

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

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

В соответствии с документацией по адресу 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` 
Смежные вопросы