PDO选择包含未知列的查询?

C. *_*nke 1 php mysql

我不知道如何在主题中更好地描述我的问题......

我有一个看起来像这样的表:

    $sql = "CREATE TABLE games (
            id INT(5) AUTO_INCREMENT PRIMARY KEY,
            name VARCHAR (255),
            player_1_id INT (3),
            player_1_status BOOLEAN,
            player_2_id INT (3),
            player_2_status BOOLEAN,
            player_3_id INT (3),
            player_3_status BOOLEAN
    )"
Run Code Online (Sandbox Code Playgroud)

我需要一个像这样的查询:

$stmt = $this->connection->prepare("
    SELECT id, name, turn
    FROM games
    WHERE player_1_id = :value1
    OR  player_2_id = :value1
    OR  player_3_id = :value1
");
Run Code Online (Sandbox Code Playgroud)

但另外,我想选择列"player_x_status",具体取决于找到的"player_x_id"等于:value1.我真的不知道如何更好地描述我的问题,这里缺乏条款.

有人可以建议吗?

You*_*nse 5

每次创建一个名为的字段时something_N ,您都可以确定您做错了.

你需要做的是另一张表来存储所有具有状态的玩家,比如

  • game_id
  • player_id
  • 状态

并且您将能够毫无问题地为任何玩家选择状态.

这就是关系数据库的工作方式.