【问题标题】:get information from other table where id=id从 id=id 的其他表中获取信息
【发布时间】:2015-07-29 14:01:56
【问题描述】:

所以我有 2 张桌子。

train_information
user_train_information

当有人在表单中提交内容时。它被放入train_information 表中,如下所示:

现在,当人们登录并从选择器中选择火车时。他发生在数据库中:

在另一个页面上,我希望用户看到他们在一段时间内选择的完整列表。所以我运行一个查询:SELECT * FROM user_train_information WHERE user_id=user_id;

这向我显示了表格user_train_information 但是可以在 user_id = user_id 的地方显示 train_information 吗?因为我希望用户显示他添加的火车。

编辑:

我现在拥有的:

function testingggg() {
        $sql = "SELECT *
FROM train_information
INNER JOIN user_train_information
ON train_information.train_id = user_train_information.train_id
WHERE user_train_information.user_id = user_id";
        $sth = $this->pdo->prepare($sql);
        $sth->bindParam("user_id", $_GET["user_id"], PDO::PARAM_INT);
        $sth->execute();
        return $sth->fetchAll();
    }

我在这里叫我:

<?php
        $summary = $database->testingggg();
    ?>
    <?php
        foreach ($summary as $result){
        echo $result['train_name']; 
    }
?>

我得到错误:

【问题讨论】:

  • train_information没有列user_id
  • Tru @Jens ,但他们都有 train_id 列
  • 所以你的问题有点误会。
  • 错误信息是关于列的歧义。如果两个表共享一个列名,您需要说明您选择的是哪一个。这是所有列的好习惯。不要使用 "SELECT *" 。但是,虽然表中存在列歧义,但引用的实际错误是未能正确准备查询。再看看 PHP 的 PDO 准备语法。

标签: php mysql sql database mysqli


【解决方案1】:

这就是我在这种情况下使用查询的方式并且它有效。在你的情况下,某处有歧义。还要确保您在 $_GET["user_id"] 中有适当的值。请检查

   function testingggg() {
        $sql = "SELECT ti.train_name, ti.train_id, uti.user_id
                FROM train_information as ti
                JOIN user_train_information as uti
                ON ti.train_id = uti.train_id
                WHERE uti.user_id = :user_id";
        $sth = $this->pdo->prepare($sql);
        $sth->bindParam(":user_id", $_GET["user_id"], PDO::PARAM_INT);
        $sth->execute();
        return $sth->fetchAll();
    }

【讨论】:

    【解决方案2】:
    SELECT t.train_id
         , t.country_id train_country_id
         , t.train_name
         , t.number_of_bogies
         , t.number_of_axles
         , t.wheel_diameter_min
         , t.wheel_diameter_max
         , u.user_row_id
         , u.user_id
         , u.country_id user_country_id
      FROM user_train_information u
      JOIN train_information t
        ON t.train_id = u.train_id
     WHERE u.user_id = :user_id;
    

    【讨论】:

      【解决方案3】:

      你试试这个。

          SELECT * FROM train_information INNER JOIN user_train_information 
           ON train_information.train_id = user_train_information.train_id
          WHERE user_train_information.user_id = $user_id;
      

      【讨论】:

      • 你可以使用 INNER JOIN 来做到这一点。
      【解决方案4】:
      SELECT * 
      FROM   train_information 
             INNER JOIN user_train_information 
                     ON train_information.train_id = user_train_information.train_id 
      WHERE  user_train_information.user_id = user_id; 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-10-02
        • 1970-01-01
        • 2011-03-31
        • 2022-01-25
        • 1970-01-01
        • 2012-07-29
        • 2015-01-31
        • 1970-01-01
        相关资源
        最近更新 更多