加入条件

时间:2015-08-19 09:11:38

标签: mysql

我已经在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);

这将只显示任何内容。

2 个答案:

答案 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中的一个点。