MySQL PHP count (*) возвращает что-то странное - PullRequest
1 голос
/ 19 августа 2009

Я выполняю следующий запрос, ожидая, что он возвратит INTEGER, но он возвращает "Resource id # 3"
Что я делаю не так?

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

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

Ответы [ 6 ]

3 голосов
/ 19 августа 2009

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;
2 голосов
/ 19 августа 2009

Вам нужно:

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

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

1 голос
/ 19 августа 2009

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

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

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

$row = mysql_fetch_array($resource);
$count = $row[0];
0 голосов
/ 19 августа 2009

Если вы планируете использовать полный запрос позже (например, выберите , а не счет ()), вы можете сохранить попадание в базу данных, используя 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
} 
0 голосов
/ 19 августа 2009

mysql_query () возвращает ресурс результата . Вам нужна другая функция для получения «ценной информации» с этого ресурса. В этом случае mysql_fetch_array () / mysql_fetch_row () / mysql_fetch_object , как указал Клет. Или (поскольку это только одно значение) mysql_result () .
Любой SQL-запрос может завершиться ошибкой по разным причинам. Вы должны всегда проверять возвращаемое значение mysql_query (). Если это ЛОЖЬ, что-то пошло не так и 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;
0 голосов
/ 19 августа 2009

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

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

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