MySQL在PHP中使用内部连接

MySQL在PHP中使用内部连接,php,mysql,Php,Mysql,我有两个表,每个表中的唯一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[

我有两个表,每个表中的唯一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;
      }
   }
}
至于从单独的表中提取数据,而不是将其全部混淆,我正在考虑这样做:

    $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?

我只是在猜测模式,您的需求可能是针对您的情况的更好的查询:

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

这是因为你误导了通配符*字符的使用。住手!!当傲慢的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

嵌套查询很糟糕!请看一看。仔细想想——您将为外部查询返回的每一行运行一个查询。这非常慢,而连接只是一个查询;只是更新变量的值,而不是创建数组。如果您知道如何在SQL中执行此操作,那么您就知道如何在PHP中执行此操作。您不应该选择*并且不应该在循环中嵌套查询。尽可能多地提前收集数据。@JamWaffles哦,我做得非常错误,我做不到;我不能让连接在php中工作,所以尝试了嵌套的方式,我也做到了,但我认为这是一种愚蠢的方式。我找到的教程是2007年的,你发的这个看起来更像promising@MetalFrog这是有道理的,我只是用华夫饼干发给我的教程再试了一次,我成功了。非常感谢!您的加入有问题condition@tereško可以自由地进行您认为有用的任何更正。我不知道他需要什么样的加入。也许一个内线更好,是的,但这一个将在两个主键上连接。。假设他有主键well,看看代码,他似乎在使用第一个select的ID作为第二个查询的条件,所以我猜是这样的;但是正如我所说的,没有其他信息,我只是使用一个共同的情况是的,两个表上的id都是唯一的对应id,它们被设置为主要的和自动递增的。使用foo_id是on foo.foo_id=bar.foo_idI不知道只能选择一列。我在一月份读了一本关于PHP的书,他们基本上用SELECT*为每个查询提供了一章关于SQL的内容。在过去的几周里,当我下班的时候,我为我和我的朋友创建了这个网站,我学到了很多关于SQL的知识,这太疯狂了。非常感谢,任何优化我的查询的方法都能帮上大忙@user1053263,有很多关于SQL的好书。阅读任何只涉及MySQL的文章,然后获取。。那是高级用途的。所有声称教你MySQL和PHP的书都不如三天学好C。