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


Counting MySQL duplicate rows using PHP returns error

我试图做一个数据库中的行数计数,并告诉我有多少行是在数据库中包含重复。然而,我得到以下错误:

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

用"var_dump($count)"代替"echo $count".. 然后,您将看到,这里有一个对象,而不是字符串或整数。

错误提示不能将该对象转换为字符串。

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

摘自mysqli_query的文档:

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

一旦你从mysqli_query返回,你可以使用mysqli_fetch_*函数(如mysqli_fetch_arraymysqli_fetch_assoc)来检索数据本身。

你的最终结果看起来像这样:

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

你必须这样做:

$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_assoc mysqli_fetch_object mysqli_fetch_row()()()…