我想用这个命令计算id为let的行,然后说32:
$countReviews = Yii::$app->db->createCommand("SELECT COUNT(*)
FROM `product_review`
WHERE `product_review`.`product_id`=$book->id")->execute();
表中没有行,但结果返回1。这是为什么 ?这是完成任务的正确方法吗?谢谢!
答案 0 :(得分:3)
没有GROUP BY
的聚合查询总是返回一行。计数的值为零,但行数为1.
我认为您正在查看查询返回的行数,而不是计数返回的值。
答案 1 :(得分:2)
execute()
用于处理数据的sql查询(插入/更新/删除等)。正如documentation所说:
此方法仅应用于执行非查询 SQL语句,例如INSERT,DELETE,UPDATE SQL。 不会返回任何结果。
您应该在此使用query()
,或者甚至querySacalar()
,因为您需要一个整数值。