MySQL在PHP中使用内连接

时间:2012-03-19 19:53:38

标签: php mysql

我有2个表,每个表中的唯一ID在两个表中都是相同的。 我如何在php中一起加入两个表中的数据?

当我通常提取数据时,我这样做:

    $get_board_array = mysql_query("SELECT * FROM posts WHERE user_id_to = '$id' ");
      while($posts = mysql_fetch_array($get_board_array))
        {
          $post_id = $get_post['post_id']; 
          $html_output .= "<p>".$post_id."</p>";
        }

至于从单独的表中提取数据而不是将它们全部搞砸了,我想做的是这样的事情:

$get_arrayA = mysql_query("SELECT * FROM tableA WHERE age = '36' ");
  while($dataA = mysql_fetch_array($get_arrayA))
  {

      $dataA_id = $dataA['id'];
      $dataA_firstName = $dataA['FirstName'];

  foreach($dataA_id)
    {
      $get_arrayB = mysql_query("SELECT * FROM tableB where id='".$dataA_id."'");
      while($dataB = mysql_fetch_array($get_arrayB))
      {

      $dataB_lastName = $dataB['LastName'];

      $html_output .= "<p>".$dataA_firstName.$dataB_lastName"</p>";

      echo $html_output;
      }
   }
}

或者这太奇怪了?

我知道如何使用内部联接在SQL中执行此操作但是如何在PHP中执行类似的操作并输出html?

2 个答案:

答案 0 :(得分:1)

这(我只是猜测架构和您的需求)可以更好地查询您的情况:

SELECT a.id,a.FirstName,b.LastName 
FROM tableA a 
JOIN tableB b ON b.id = a.id
WHERE a.age = '36' 

答案 1 :(得分:1)

这是因为你误导了使用通配符(*)字符。 停止!! 当傲慢的php开发人员想象他们不需要学习SQL时会发生这种情况。如果你需要什么,那就选择它。

SELECT 
    foo.foo_id, 
    foo.data as paramX , 
    bar.type,
    bar.something_else
FROM foo
    INNER JOIN bar USING (foo_id)
WHERE
    foo.state = 'open'
AND bar.type = 3