0

我想从关联的 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

非常感谢 ;)

4

1 回答 1

1

好吧,您的错误描述了自己。

来自MeekroDB 文档

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

示例代码:

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) 定义一个别名,这样会更容易从结果数组中检索数据。
于 2021-12-16T18:22:02.327 回答