【问题标题】:SELECT COUNT with meekrodb Uncaught MeekroDBExceptionSELECT COUNT with meekrodb Uncaught MeekroDBException
【发布时间】:2022-01-19 19:50:18
【问题描述】:

我想从关联的 idnr 中计算表中的 num 数。 但是,我收到以下错误消息: 致命错误:未捕获的 MeekroDBException:如果使用命名参数,则必须传递参数的 assoc 数组!

表格如下所示:

+---------+---------+-----------------------+
| idnr    |  nums   |  timestamp            |
+---------+---------+-----------------------+
| 1234    |  75     |  2021-10-19 11:59:22  |
| 1234    |  73     |  2021-11-09 11:59:22  |
| 1234    |  43     |  2020-07-19 12:59:22  |
| 4565    |  31     |  2021-11-19 13:59:22  |
+---------+---------+-----------------------+

SQL 字符串:

$results = DB::query("SELECT COUNT(nums) FROM tablename WHERE idnr = %i_idnr", '1234');

我想显示如下:

echo $results['nums']; // the result should be 148

非常感谢;)

【问题讨论】:

    标签: php mysql mariadb meekro


    【解决方案1】:

    嗯,你的错误描述了它本身。

    来自MeekroDB docs

    您可以传递一组命名参数并按名称访问它们。

    示例代码:

    DB::query("SELECT * FROM tbl WHERE name=%s_name AND age > %i_age AND height <= %d_height", 
      [
        'name' => $name,
        'age' => 15,
        'height' => 13.75
      ]
    );
    

    所以你的情况是:

    $results = DB:: queryFirstRow(
        "SELECT SUM(nums) as nums_sum FROM tablename WHERE idnr = %i_idnr",
        ['idnr' => '1234']
    );
    
    echo $results['nums_sum'];
    

    还有一些注意事项:

    1. 您应该使用 SUM(),否则您只会计算行数
    2. 由于它是一个始终返回单行的聚合查询,因此请使用 queryFirstRow 而不是查询
    3. 你应该为 SUM(nums) 定义一个别名,这样会更容易从结果数组中检索数据。

    【讨论】:

    • 感谢您的回答 :) 但是与下面的字符串有什么不同?我怎样才能显示结果?因为当我写“echo $results;”时然后我收到消息:警告:数组到字符串的转换...
    • @user9554121 我更新了答案
    • 完美,现在可以使用了!非常感谢您提供的信息和帮助;)
    猜你喜欢
    • 1970-01-01
    • 2015-10-22
    • 1970-01-01
    • 2013-04-10
    • 1970-01-01
    • 1970-01-01
    • 2012-01-12
    • 1970-01-01
    • 2021-08-06
    相关资源
    最近更新 更多