SELECT 计数与 meekrodb 未捕获的 MeekroDBException

SELECT COUNT with meekrodb Uncaught MeekroDBException

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

table 看起来像这样:

+---------+---------+-----------------------+
| 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

非常感谢 ;)

好吧,你的错误描述本身。

来自MeekroDB docs

You can pass an array of named parameters and access them by name.

示例代码:

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. 由于它是一个总 returns 一行的聚合查询,因此请使用 queryFirstRow 而不是 query
  3. 你应该为 SUM(nums) 定义一个别名,这样从结果数组中检索数据会更容易。