gpt4 book ai didi

PHP:Left Join 2表并打印所有记录

转载 作者:行者123 更新时间:2023-11-29 13:06:53 26 4
gpt4 key购买 nike

我的数据库中有两个表记录,如下所示:

表 1 的第 1 列:

topic_id    name
21 my computer

表 2 的列如下:

reply_id    topic_id    message
1 21 blabla
2 21 blue

其中表2中的topic_id列是表1的外键

我想回显表 2 中的所有回复以及表 1 中的主题名称 (#21)。因此,我进行了这样的查询

$q="SELECT name, message
FROM table1
LEFT JOIN table2
ON table1.topic_id = table2.topic_id
";

但是,结果/输出返回主题名称和仅 1 个回复,而不是预期的 2 个(或全部)。我错过了什么吗?

我使用了 LEFT JOIN,因为有些主题仍在等待回复。如果没有任何回复,主题名称仍会打印在浏览器中。

我也尝试添加

GROUP BY table1.topic_id

但还是没有运气!

你能帮忙吗?谢谢

编辑:为了澄清问题,我添加了 php 代码来获取记录,如下所示:

如您所知,该名称只需打印一次。所以,我的代码是这样的:

$tid = FALSE;
if(isset($_GET['qid']) && filter_var($_GET['qid'], FILTER_VALIDATE_INT, array('min_range'=>1) ) ){

// create the shorthand of the question ID:

$tid = $_GET['tid'];

// run query ($q) as shown above

$r = mysqli_query($dbc, $q) or die("MySQL error: " . mysqli_error($dbc) . "<hr>\nQuery: $q");
if (!(mysqli_num_rows($r) > 0) ){

$tid = FALSE; // valid topic id

}


}//isset($_GET['qid']

if ($tid) { //OK

$printtopic = FALSE; // flag variable to print topic once

while($content = mysqli_fetch_array($r, MYSQLI_ASSOC)){

if (!$printtopic) {
echo $content['name'];
$printtopic= TRUE;
}

}
} // end of $tid

// Print the messages if any:
echo $content['message'];

最佳答案

尝试使用内连接

$q="SELECT name, message
FROM table1
INNER JOIN table2
ON table1.topic_id = table2.topic_id";

关于PHP:Left Join 2表并打印所有记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22576525/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com