使用PHP计算MySQL重复行会返回错误

时间:2014-06-17 21:01:14

标签: php mysql sql

我正在尝试计算数据库中的行数,并显示数据库中包含重复项的行数。但是,我收到以下错误:

Catchable fatal error: Object of class mysqli_result could not be converted to string in C:\wamp\www\SPARTAN-ver2\pages\scenario_card.php on line 203

这是我使用的PHP

$countQuery = "SELECT breakers, COUNT(breakers) AS num FROM emergencies GROUP BY breakers";
$count = mysqli_query($db, $countQuery) or die(mysqli_error($db));
echo $count;

这是SQL表头的样子

SYSTEMS         DESCRIPTIONS            BREAKERS
APU             APU Power Fail          APU [1]
APU             APU Starter Engaged     APU [7]
APU             APU Hot Start           APU [5]
AVIONICS        ADS 1 Fail              AVIONICS[1]

这个错误意味着什么,我做错了什么?因为当我在PHPMyAdmin中运行查询时,我得到正确的输出,应该是

BREAKERS        NUM
APU [1]         3
APU [5]         1
APU [7]         1
AVIONICS[1]     2

3 个答案:

答案 0 :(得分:3)

而不是" echo $ count",尝试" var_dump($ count)" ..然后你会看到,你有一个对象,那里 - 没有字符串或整数。

错误说,您无法将该对象转换为字符串。

使用包含字符串的对象的属性(很可能是结果或类似的东西)。

答案 1 :(得分:1)

来自mysqli_query的{​​{3}}:

  

返回值

     

失败时返回FALSE。成功的SELECT,SHOW,DESCRIBE或   EXPLAIN查询mysqli_query()将返回 the documentation对象。对于   其他成功的查询mysqli_query()将返回TRUE。

mysqli_query返回后,您可以使用mysqli_result函数(例如mysqli_fetch_*mysqli_fetch_array)来检索数据本身。

您的最终结果将类似于:

$countQuery = "SELECT breakers, COUNT(breakers) AS num FROM emergencies GROUP BY breakers";
$rtn = mysqli_query($db, $countQuery) or die(mysqli_error($db));
$counts = mysql_fetch_assoc($rtn);
echo $counts['breakers'];

答案 2 :(得分:0)

你必须这样做:

$sqlCommand = "SELECT breakers, COUNT(breakers) AS num FROM emergencies GROUP BY breakers";
$query = mysqli_query($db, $sqlCommand) or die(mysqli_error($db));
while ($row = mysqli_fetch_array($query)) {
   print_r($row);
}

关于http://www.php.net/manual/en/mysqli-result.fetch-array.php

您还可以使用其他实现的方法从mysqli_query获取数据。 mysqli_fetch_row(),mysqli_fetch_object(),mysqli_fetch_assoc()......