Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从另一个表中获取记录_Php_Mysql - Fatal编程技术网

Php 从另一个表中获取记录

Php 从另一个表中获取记录,php,mysql,Php,Mysql,我试图读取所有数据,但有一条记录在另一个表中。我可以在一次查询中将其与其他记录一起读取吗 $sql_query="SELECT * FROM blog_posts ORDER BY id DESC"; // table to display results here // modify here echo '<h1>'.$rows["title"].'</p></h1>'; echo '<p> '.$rows["post"].'</p&

我试图读取所有数据,但有一条记录在另一个表中。我可以在一次查询中将其与其他记录一起读取吗

 $sql_query="SELECT * FROM blog_posts ORDER BY id DESC";

// table to display results here // modify here 
echo '<h1>'.$rows["title"].'</p></h1>';
echo '<p> '.$rows["post"].'</p>';
echo '<p><span class="style1">Door</span>: '.$rows["first_name"].' ';
echo '<p>Geplaatst op</span>: '.$rows["date_posted"].'</p>';                           
echo "<BR>";
$sql\u query=“按id描述从博客帖子中选择*”;
//在此处显示结果的表//在此处修改
回显“.$rows[“title”]”。

; 回显“”.$rows[“post”]。

”; 回音“Door:”.$rows[“first_name”]。”; 回显“Geplaatst op:”.$rows[“发布日期”]。

; 回声“
”;

记录:first_name来自表:people。其余的都来自博客帖子。

您可以从多个类似这样的表格中进行选择

$sql_query="SELECT * FROM blog_posts,people WHERE people.id=$id"; ORDER BY id DESC 
SELECT * FROM blog_posts
LEFT JOIN people
ON blog_posts.{USERIDCOLUMNNAME}=people.{USERIDCOLUMNNAME}
ORDER BY blog_posts.id DESC; 

您可以像这样从多个表中进行选择

$sql_query="SELECT * FROM blog_posts,people WHERE people.id=$id"; ORDER BY id DESC 
SELECT * FROM blog_posts
LEFT JOIN people
ON blog_posts.{USERIDCOLUMNNAME}=people.{USERIDCOLUMNNAME}
ORDER BY blog_posts.id DESC; 

像这样在查询中使用LEFT JOIN

$sql_query="SELECT * FROM blog_posts,people WHERE people.id=$id"; ORDER BY id DESC 
SELECT * FROM blog_posts
LEFT JOIN people
ON blog_posts.{USERIDCOLUMNNAME}=people.{USERIDCOLUMNNAME}
ORDER BY blog_posts.id DESC; 
或者像劳尔在评论中所说的那样,定义每一个专栏:

SELECT people.name as name, blog_posts.title as title, blog_posts.post as post FROM blog_posts,people WHERE blog_posts.people_id=people.id ORDER BY id DESC 

像这样在查询中使用LEFT JOIN

$sql_query="SELECT * FROM blog_posts,people WHERE people.id=$id"; ORDER BY id DESC 
SELECT * FROM blog_posts
LEFT JOIN people
ON blog_posts.{USERIDCOLUMNNAME}=people.{USERIDCOLUMNNAME}
ORDER BY blog_posts.id DESC; 
或者像劳尔在评论中所说的那样,定义每一个专栏:

SELECT people.name as name, blog_posts.title as title, blog_posts.post as post FROM blog_posts,people WHERE blog_posts.people_id=people.id ORDER BY id DESC 

叫我疯子吧,但看起来first_name是另一个表中的字段,而不是整个记录。因此,我认为您正在寻找的方法是将blog_posts表与people表连接起来。你如何做到这一点,完全取决于这种关系:一对一,一对多,或多对多

如果是一对一(可能不是),那么两个表中的另一个表很可能都有一个外键(即有一个
blog\u post.people\u id
字段和一个
people.blog\u post\u id
字段)。如果是这种情况,那么执行联接的方式就无关紧要了。由于您已经从
blog\u posts
表中进行了选择,因此它可能如下所示:

SELECT * FROM blog_posts
    INNER JOIN people ON blog_posts.people_id = people.id
请注意,选择时以这种方式使用*将从两个表中选择所有字段(很可能不是您想要的)

对于一对多,一个表上只有一个外键。这可能是您的情况:一个人可以撰写多篇文章,并且关系存储在blog\u posts.person\u id字段中。在这种情况下,上面的查询完全相同。唯一的区别是你不能走另一条路

对于多对多关系,您必须在两个表之间中间有一个连接表(有些人把这些表称为“枢轴”表)。此表只需要记录人物ID和博客帖子ID,并表示允许许多人撰写一篇博客文章,以及允许一个人同时撰写多篇博客文章的情况。此关系的查询将不同:

SELECT * FROM blog_posts b
    INNER JOIN blog_post_people bp ON bp.blog_post_id = b.blog_post_id
    INNER JOIN people p ON p.people_id = bp.people_id

同样,选择时在此处使用*将为您提供所有三个表中的列,您可能应该避免使用它。

称我为疯子,但它似乎是另一个表中的一个字段,而不是整个记录。因此,我认为您正在寻找的方法是将blog_posts表与people表连接起来。你如何做到这一点,完全取决于这种关系:一对一,一对多,或多对多

如果是一对一(可能不是),那么两个表中的另一个表很可能都有一个外键(即有一个
blog\u post.people\u id
字段和一个
people.blog\u post\u id
字段)。如果是这种情况,那么执行联接的方式就无关紧要了。由于您已经从
blog\u posts
表中进行了选择,因此它可能如下所示:

SELECT * FROM blog_posts
    INNER JOIN people ON blog_posts.people_id = people.id
请注意,选择时以这种方式使用*将从两个表中选择所有字段(很可能不是您想要的)

对于一对多,一个表上只有一个外键。这可能是您的情况:一个人可以撰写多篇文章,并且关系存储在blog\u posts.person\u id字段中。在这种情况下,上面的查询完全相同。唯一的区别是你不能走另一条路

对于多对多关系,您必须在两个表之间中间有一个连接表(有些人把这些表称为“枢轴”表)。此表只需要记录人物ID和博客帖子ID,并表示允许许多人撰写一篇博客文章,以及允许一个人同时撰写多篇博客文章的情况。此关系的查询将不同:

SELECT * FROM blog_posts b
    INNER JOIN blog_post_people bp ON bp.blog_post_id = b.blog_post_id
    INNER JOIN people p ON p.people_id = bp.people_id

同样,选择时在此处使用*将为您提供所有三个表中的列,您可能应该避免使用它。

您的数据模型(模式)到底是什么样的?从“blog_posts”到(我认为是“users”)没有外键吗?仍然没有接受答案吗?它仍然不起作用,我在这里尝试了一切。但是如果我把它添加到我的查询中,它根本不会从数据库中读取任何内容。顺便说一句,另一条记录不在同一个数据库中。它在另一个数据库中,那么仍然可以这样做吗?您的数据模型(模式)到底是什么样子的?从“blog_posts”到(我认为是“users”)没有外键吗?仍然没有接受答案吗?它仍然不起作用,我在这里尝试了一切。但是如果我把它添加到我的查询中,它根本不会从数据库中读取任何内容。顺便说一句,另一条记录不在同一个数据库中。它在另一个数据库中,那么还可以这样做吗?我以前试过,但是它没有读取任何内容。这个查询不是告诉mysql阅读所有博客文章和人物吗?因为我只需要people的一条记录first\u name。您也需要一个where子句,重命名字段时选择people.name作为name,blog\u posts.title作为title,blog\u posts.post作为blog\u posts的post,people where blog\u posts.people\u id=people.id按id排序DESCI以前尝试过,但没有读取任何内容。这个查询不是告诉mysql阅读所有博客文章和人物吗?因为我只需要people的一条记录first_name.You也需要where子句,重命名字段时选择people.name作为name,blog_posts.title作为title,blog_posts.post作为post F