【问题标题】:Accessing rows from a mysqli join query in php从 php 中的 mysqli 连接查询访问行
【发布时间】:2016-01-15 21:40:02
【问题描述】:

我有以下代码:

// db connection info set up earlier
$sql= "SELECT `TABLE_1.ID`, `TABLE_2.ID`, `POTATO` FROM `TABLE_1.ID` LEFT JOIN `TABLE_2` ON `TABLE_1`.`ID` = `TABLE_2`.`ID_OF_OTHER_TABLE`;";
$rows = mysqli_query($connection, $sql);
foreach ($rows as $row){
    $potato = $row["POTATO"];
    $id = $row["TABLE_2.ID"];
}

我无法获得 TABLE_2.ID。我试图做一个 print_r 来获得正确的格式,但它说它是一个 mysqli 对象,我没有得到比这更多的信息。但是,我可以得到土豆。所以我猜这是一个调用语法问题,但我搜索了多个站点(包括堆栈和谷歌)并没有找到明确的答案。那么,我需要做什么而不是

$id = $row["TABLE_2.ID"];

?

【问题讨论】:

    标签: php mysql mysqli left-join


    【解决方案1】:

    为具有相同名称的列分配别名。

    $sql= "SELECT `TABLE_1`.`ID` AS t1_id, `TABLE_2`.`ID` AS t2_id, `POTATO` 
           FROM `TABLE_1.ID` 
           LEFT JOIN `TABLE_2` ON `TABLE_2`.`ID_OF_OTHER_TABLE` = `TABLE_1`.`ID`;";
    $rows = mysqli_query($connection, $sql);
    foreach ($rows as $row){
        $potato = $row["POTATO"];
        $id = $row["t2_id"];
    }
    

    【讨论】:

      【解决方案2】:

      您不能将一个表与其自身连接起来,您也不能拥有一个未连接的表 = 另一个表中的某些东西无法连接到自身。

      这将起作用:

        // db connection info set up earlier
      $sql= "SELECT TABLE_1.ID, TABLE_2.ID, POTATO
              FROM 
              TABLE_1.ID
              LEFT JOIN TABLE_2 ON TABLE_1.ID = TABLE_2.ID";
      $rows = mysqli_query($connection, $sql);
      
      
      while ($row = mysqli_fetch_assoc($rows)) {
      
      echo ($row['ID']);
      
      }
      mysql_free_result($rows);
      

      【讨论】:

      • 我怀疑自己加入表格只是一个错字。
      • 您没有使用正确的连接列。应该是table_2.id_of_other_table
      • @Barmar 正确,这是一个错字,抱歉。我修好了。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-15
      • 2017-12-07
      • 1970-01-01
      • 2023-03-08
      • 2019-02-07
      相关资源
      最近更新 更多