MySQL PHP计数(*)返回一些奇怪的东西

时间:2009-08-19 13:51:30

标签: php mysql

我正在运行以下查询,期望它返回一个INTEGER,但它返回“资源ID#3”
我做错了什么?

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

此表中实际上有15行,我想返回数字15。 有什么建议吗?

6 个答案:

答案 0 :(得分:3)

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;

答案 1 :(得分:2)

你需要:

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

mysql_query()未返回结果。它返回一个你可以遍历并查询行的资源(如上所述)。

答案 2 :(得分:1)

根据文档,这实际上是预期的行为:

  

对于SELECT,SHOW,DESCRIBE,EXPLAIN和其他返回结果集的语句,mysql_query()会在成功时返回资源,或者在出错时返回FALSE。

这是一个常规选择,返回一行有一列,应该这样处理。您可以在结果上调用 mysql_fetch_array

$row = mysql_fetch_array($resource);
$count = $row[0];

答案 3 :(得分:0)

mysql_query()返回result resource。您需要另一个函数从该资源获取“有价值的信息”。在这种情况下,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;

答案 4 :(得分:0)

如果您打算稍后使用完整查询(例如,选择,而不是计数()),则可以在完整查询中使用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
} 

答案 5 :(得分:-1)

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

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