【问题标题】:Error message when using COUNT(*) [duplicate]使用 COUNT(*) 时出现错误消息 [重复]
【发布时间】:2016-02-11 15:13:31
【问题描述】:

我目前收到此错误消息:

“可捕获的致命错误:不能是类 mysqli_result 的对象 在 ".

中转换为字符串

我正在尝试计算表中的行数。我知道你也可以使用mysqli_num_rows,但我想我可以只使用SELECT COUNT ( * ) FROM table,但它似乎不起作用。如何让Count(*) 工作?

我的代码:

$query = "SELECT COUNT(*) FROM category";

$select_all_categories = mysqli_query($connection, $query);

echo "<div class='huge'> $select_all_categories </div>"

【问题讨论】:

  • NOTHING 与计数有关。你需要 RTFM php.net/mysqli_query。该函数返回一个语句HANDLE。您需要从该句柄中获取一行结果并从该行中提取您的计数。
  • 如果您阅读过文档:您会看到成功时 mysqli_query 将返回一个对象(在您的情况下),失败时返回 false
  • $select_all_categoriesmysqli_result 的一个实例,而不是一个字符串。该类提供了访问查询返回的数据的方法,例如:echo $select_all_categories-&gt;fetch_assoc()['COUNT(*)'];

标签: php sql mysqli count


【解决方案1】:

这行不通,因为mysqli_query 返回一个充满数据的对象,这些数据需要由mysqli_fetch_arraymysqli_fetch_assoc 获取。

如果您想获得计数,则需要这样做:

$query = "SELECT COUNT(*) as count FROM category";
$select_all_categories = mysqli_query($connection, $query);
$data = mysqli_fetch_assoc($select_all_categories);
echo "<div class='huge'> " . $data['count']. " </div>"

【讨论】:

  • $data['count']mysqli_fetch_object()
  • 谢谢史蒂夫,我忘了
【解决方案2】:

$select_all_categories 是一个对象,它不是一个简单的字符串。因此,您不能使用echo

您需要先获得实际结果,然后才能成为可行的字符串。

就您而言,简单计算一下:

  $query = "SELECT COUNT(*) AS 'count' FROM category";

  $select_all_categories = mysqli_query($connection, $query);

  $rows = $select_all_categories->fetch_assoc();

  $string = $rows[0]['count'];

  echo "<div class='huge'> $string </div>"

请注意,我在 MySQL 查询中为列指定了别名 count

您的查询(包括COUNT(*))没问题,这里没有产生错误。您得到的错误是 PHP 错误 - 脚本本身有问题。 PHP 告诉您不能回显对象。您只能回显字符串,但如果您尝试回显它们,PHP 会为您将大多数数据类型转换为字符串(例如整数)。

【讨论】:

    【解决方案3】:

    $select_all_categories 变量它是一个对象,您可以在documentation 中了解它。您可以使用 fetch_allfetch_assocfetch_row 等方法。

    在您的情况下,我建议使用fetch_row,例如:

    <?php
    
    $connection = new mysqli('127.0.0.1', 'root', 'www', 'ccc');
    
    $select_all_categories = $connection->query('SELECT COUNT(*) FROM `category`');
    
    var_dump($select_all_categories->fetch_row()); // fetch_row() will return "1" for my database
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-10
      • 1970-01-01
      相关资源
      最近更新 更多