0

我正在尝试为我的博客创建一个档案页面,该页面仍在构建中。我有三个不同的 MySQL 表,我需要从中提取数据,其中 1 个与其他 2 个无关。我在这里找到了类似的帖子,但看到我对 PHP 的经验不是很丰富,我无法弄清楚如何转换这就是我所需要的。我知道这可以通过执行三个不同的查询轻松完成,但这会给服务器带来不必要的负载并减慢页面加载时间和其他所有事情。

两个相关的类别是“博客”和“类别”,而第三个是内置在博客中的不同应用程序,称为“大脑链接”

以下是相关表的两个查询:

    $blogQuery = mysqli_query($link, "SELECT * FROM pub_blogs ORDER BY id DESC") or die ("Could not access DB: " . mysqli_error($link));

    $row = mysqli_fetch_assoc($blogQuery);  
    $blogID = $link->real_escape_string($row['id']);
    $title = $link->real_escape_string($row['title']);
    $date = $link->real_escape_string($row['date']);
    $category = $link->real_escape_string($row['category']);
    $content = $link->real_escape_string($row['content']);

    $blogID = stripslashes($blogID);
    $title = stripslashes($title);
    $date = stripslashes($date);
    $category = stripslashes($category);
    $content = stripslashes($content);

    $catQuery = mysqli_query($link, "SELECT * FROM categories ORDER BY id DESC") or die ("Could not access DB: " . mysqli_error($link));

    $row = mysqli_fetch_assoc($catQuery);
    $catID = $link->real_escape_string($row['id']);
    $catName = $link->real_escape_string($row['name']);
    $description = $link->real_escape_string($row['descriptions']);

    $catID = stripslashes($catID);
    $catName = stripslashes($catName);
    $description = stripslashes($description);

这是第三个不相关的查询:

    $brainQuery = mysqli_query($link, "SELECT * FROM brain_links ORDER BY id DESC") or die ("Could not access DB: " . mysqli_error($link));

    $row = mysqli_fetch_assoc($brainQuery);
    $brainID = $link->real_escape_string($row['id']);
    $site_name = $link->real_escape_string($row['site_name']);
    $site_url = $link->real_escape_string($row['site_url']);
    $post_date = $link->real_escape_string($row['post_date']);

是否可以通过一次查询从所有这三个中获取数据?如果没有,有人可以指出某个地方的方向,告诉我如何加入这两个相关的吗?

博客表在'category'列下保存了category ID来标识它属于哪个category

我感谢任何帮助或建议!

4

2 回答 2

0

不,您不能使用相同的查询从第三张表中获取数据。Mysql 想要两个表之间的映射。

您可以加入博客和类别,但不能加入大脑链接

对于前两个表做:

select * , c.id , c.name , c.descriptions from pub_blogs p  join categories c on c.id = p.category order by id desc ;  

对于第三个表,因为没有映射,您不能加入它。

快乐编码:)

于 2012-09-28T06:36:03.400 回答
0

这将从两个表中获取数据。但是,无法从第三个表中获取数据

SELECT 
        * 
FROM pub_blogs 
LEFT JOIN categories on categories.id = pub_blogs .category
ORDER BY id DESC

Ajnd 对于第三个表,您无法获取它,因为您无法链接到任何其他表。如果你改变你的表结构,你可以做到。

于 2012-09-28T06:22:15.377 回答