我的数据库中有两个表
table: products table: companies
+-----------+------------+ +------+------------+
| name | company_id | | id | name |
+-----------+------------+ +------+------------+
|Product 1 | 1 | | 1 | Company 1 |
|Product 2 | 1 | | 2 | Company 2 |
|Product 3 | 3 | | 3 | Company 3 |
|Product 4 | 1 | | 4 | Company 4 |
|Product 5 | 1 | | ... |
|Product 6 | 3 | +------+------------+
|Product 7 | 2 |
|... |
+-----------+------------+
现在我必须使用 HTML元素制作公司选择器(按公司过滤产品) ,其中包含表中所有公司的名称以及列表中公司名称之后的产品。SELECT
companies
COUNT
所以,我的目标是获得SELECT
这样的选项:
- 公司 1 (4)
- 公司 2 (1)
- 公司 3 (2)
- 公司 4 (0)
(注意:括号内的计数来自上面的示例)
到目前为止我尝试了什么?
我之前使用的是mysql_*
函数,后来它是mysqli
程序模型。我可以手动执行此操作,一个查询公司,另一个查询while
块内COUNT
的元素(按循环中当前公司的 id 过滤)。现在我正在尝试使用PDO object
这对我来说是新事物,但我对它不是很熟悉。
问题
是否有可能COUNT
通过一个查询(使用JOINs
或其他东西)获得?如果没有,我如何使用我的$dbPDO
对象在循环内进行查询(旧方式)?还是有什么其他方式?
我在这里查看了一些示例,但没有什么可以适应我的要求。也许我错过了一些东西,但使用 PDO 对我来说仍然很痛苦(我必须尽快学习)。
看着我自己的问题,我认为这并不难,但最糟糕的是,我自己找不到解决方案。
最后,我有解决方案mysqli
,只是我不太喜欢它,并认为有更简单的方法可以完成这项任务!
我认为这个问题是我需要的,但仍然不明白答案中的查询。
到目前为止,我有这段代码,但不知道如何让它计算产品:
$dbPDO = new PDO('mysql:dbname=comixdb;host=localhost', 'root', '');
$sel_cat = ''; # selector HTML
$sql = "SELECT * FROM categories ORDER BY name";
foreach ($dbPDO->query($sql) as $row) {
$sel_cat .= "<option value=\"{$row['id']}\">{$row['name']}</option>";
}
$sel_cat = "<select><option value=\"*\">All categories</option>$sel_cat</select>";
echo $sel_cat;
希望我已经澄清了足够的问题。任何帮助,将不胜感激。