我正在运行以下查询,期望它返回一个INTEGER,但它返回“资源ID#3”
我做错了什么?
$queryPlans = mysql_query("SELECT count(*) FROM infostash.rooms");
echo $queryPlans;
此表中实际上有15行,我想返回数字15。 有什么建议吗?
答案 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);