0

如何使用 GROUP mysql bind_param 计算行数?

桌子 :check

.

__________________________
| id | product_id | user |
| 1  |    123     | test |
| 2  |    456     | test |
| 3  |    456     | test |
| 4  |    123     | test |
| 5  |    789     | test |

这是我的代码

<?PHP
$username = "test";
$sql = 'SELECT COUNT(*) FROM check WHERE user = ? GROUP BY product_id';
$statement = $db_mysqli->prepare($sql);
$statement->bind_param('s', $username);
$statement->execute();
$result = $statement->get_result();
$row = $result->fetch_row();
$all_product = $row[0];
echo $all_product;
?>

当我测试代码时,5我想知道我该怎么做才能展示3 group by product_id

4

3 回答 3

1

您需要更改 SQL 查询。

SELECT COUNT( DISTINCT PRODUCT_ID ) FROM check WHERE user = ?

这将产生 3

如果您希望每个产品都有一行,那么您可以这样做:

SELECT product_id, COUNT(*) AS c FROM check WHERE user = ? GROUP BY product_id

看起来像这样:

| product_id | c  |
|    123     | 2  |
|    456     | 2  |
|    789     | 1  |
于 2018-09-12T01:30:27.053 回答
0

试试这个查询。

$statement=$mysqli->prepare("SELECT user,COUNT(*) FROM check GROUP BY product_id");

我希望它会帮助你。

于 2018-09-12T05:27:44.397 回答
0

您可以根据需要使用这三个查询之一。它将为您提供如下所示的结果。

要获取表中存在不同 product_id 的总行数:SELECT COUNT(DISTINCT product_id) FROM check; 结果-:

计数(不同product_id)3


要获取具有不同 product_id 行的行-: SELECT COUNT(DISTINCT product_id) FROM check GROUP BY product_id; 结果-:

计数(不同product_id

1

1

1

要获取具有不同 product_id 且表中存在重复 product_id 的计数的行 - :

SELECT COUNT( product_id) FROM check GROUP BY product_id Result-:

计数( product_id) 2 2 1

于 2018-09-18T13:17:32.740 回答