You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP SQL两表内连接实现:通过user_id关联获取最新帖子及发布者用户名

PHP实现两张表内连接查询最新帖子及对应发布者

核心查询SQL

通过INNER JOIN关联两张表的关联字段,按帖子ID倒序取第一条即可得到最新发布的帖子及发布者信息:

SELECT users.name, microposts.content 
FROM microposts
INNER JOIN users ON microposts.user_id = users.id
-- 若microposts表有发布时间字段,更推荐用发布时间倒序:ORDER BY microposts.created_at DESC
ORDER BY microposts.id DESC
LIMIT 1;

代码实现

方案1:PDO实现(更推荐,支持预处理、兼容性更好)

<?php
// 数据库连接配置,替换为你自己的实际配置
$host = '127.0.0.1';
$dbname = '你的数据库名';
$username = '数据库用户名';
$password = '数据库密码';

try {
    // 建立PDO连接
    $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8", $username, $password);
    // 设置PDO错误模式为异常抛出
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // 执行查询
    $stmt = $pdo->query("SELECT users.name, microposts.content FROM microposts INNER JOIN users ON microposts.user_id = users.id ORDER BY microposts.id DESC LIMIT 1");
    // 获取查询结果
    $result = $stmt->fetch(PDO::FETCH_ASSOC);

    // 输出结果
    echo $result['name'] . PHP_EOL;
    echo $result['content'];

} catch(PDOException $e) {
    echo "查询失败: " . $e->getMessage();
}
?>

方案2:mysqli实现

<?php
// 数据库连接配置,替换为你自己的实际配置
$host = '127.0.0.1';
$dbname = '你的数据库名';
$username = '数据库用户名';
$password = '数据库密码';

// 建立mysqli连接
$conn = new mysqli($host, $username, $password, $dbname);
// 检查连接
if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
}

// 执行查询
$sql = "SELECT users.name, microposts.content FROM microposts INNER JOIN users ON microposts.user_id = users.id ORDER BY microposts.id DESC LIMIT 1";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    // 读取数据
    $row = $result->fetch_assoc();
    // 输出结果
    echo $row['name'] . PHP_EOL;
    echo $row['content'];
} else {
    echo "没有查询到数据";
}

// 关闭连接
$conn->close();
?>

内容的提问来源于stack exchange,提问作者Dadinho2000

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 09:36:02