MySQL在PHP中使用内部连接
我有两个表,每个表中的唯一id在两个表中都是相同的。 如何在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[
$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。