我已经在stackoverflow上搜索了一些解决方案,但所有这些解决方案对我都不起作用:/
首先是我的表格:
game
+----+--------------+
| id | game |
+----+--------------+
| 1 | Game1 |
| 2 | Game2 |
| 4 | Game4 |
+----+--------------+
group_game
+---------+----------+
| game_id | group_id |
+---------+----------+
| 1 | 33 |
| 1 | 45 |
| 2 | 33 |
+---------+----------+
groups
+----+------------+----
| id | group_name | ...
+----+------------+----
| 33 | Group33 | ...
| 45 | Group45 | ...
+----+------------+----
输出
我有一个包含所有组的选择框,当用户选择一个组时,应该会显示属于选择组的游戏。
例如:我选择了ID为33的组 - > $ group_id = 33
输出应如下所示:
- Game1 (ID: 1)
- Game2 (ID: 2)
我的代码
$sql = $db->prepare("
SELECT ga.id, ga.game
FROM game ga
LEFT JOIN group_game gg
ON ga.id = gg.group_id
WHERE gg.group_id = ?
");
$sql->bind_param('i', $group_id);
这将只显示任何内容。
答案 0 :(得分:0)
嗯,查询可能是......
SELECT game.*
FROM group_game
JOIN game
ON game.id = group_game.game_id
WHERE group_game.group_id = 33;
...但这与你的错误无关,这与你如何在PHP中绑定预准备语句有关。
答案 1 :(得分:0)
将你的sql改为加入game_id,如此
$sql = $db->prepare("
SELECT ga.id, ga.game
FROM game ga
LEFT JOIN group_game gg
ON ga.id = gg.game_id
WHERE gg.group_id = :i
");
$sql->bind_param('i', $group_id);
游戏中的内容(ga)是在game_id而不是group_id中找到的ID。
还要注意:我将命名的param绑定到sql中的一个点。