prepare("SELECT * FR-6ren">
gpt4 book ai didi

PHP 从另一个表中获取信息

转载 作者:太空宇宙 更新时间:2023-11-03 10:38:06 25 4
gpt4 key购买 nike

我怎样才能从另一个表中获取行的信息而不必在每个循环中都SELECT

//get posts from "posts" table
$stmt = $dbh->prepare("SELECT * FROM posts WHERE user_id = :user_id");
$stmt->bindParam(':user_id', $userId);
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);

foreach ($result as $row) {
echo $row['post'];

//get poster's full name from "users" table
$stmt = $dbh->prepare("SELECT * FROM users WHERE user_id = :user_id");
$stmt->bindParam(':user_id', $row['poster_id']);
$stmt->execute();
$result2 = $stmt->fetchAll(PDO::FETCH_ASSOC);

foreach ($result2 as $row2) {
echo $row2['full_name'];
}
}

如何使这段代码更高效、更快速?

想象一下,如果我有 1000 个帖子,每个帖子都由不同的用户发布。我需要获取发布该帖子的用户的全名。现在,由于这 1000 个用户,我需要 SELECT 1000 次。现在看起来效率很低。我怎样才能让它变得更好?

我听说加入可能有用?解决方案是什么?

最佳答案

SELECT * FROM posts
JOIN users ON posts.user_id = users.id
WHERE posts.user_id = :user_id.

你是对的,将用户表加入你的帖子查询会更快。

您可以采取的其他提高性能的方法是将查询结果缓存在诸如内存缓存之类的内容中,然后在添加或删除帖子时清除缓存。这样,您就无需在每次需要此数据时都访问数据库。

关于PHP 从另一个表中获取信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43826803/

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