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

PHP新闻详情页调用数据库数据设置og meta标签页面空白问题求助

问题排查及修复方案

第一套代码的错误点

  • 变量名拼写错误:定义的变量是$caatid,SQL语句中使用的是$catid,变量不匹配导致查询条件为空,无法命中数据
  • 未执行SQL查询:仅定义了SQL语句字符串$fetch_sql,没有调用mysql_query()执行查询,传入mysql_fetch_array()的$fetch_result是未定义变量,直接触发致命错误
  • 字段名拼写错误:SQL查询的字段是titulonews,取值时用的是titulinews,键名不匹配导致取到空值
  • 使用已废弃的mysql_*扩展:PHP7及以上版本已完全移除该扩展,运行直接抛出致命错误导致页面空白

第二套代码的错误点

  • 数组键名错误:$row['$titulonews']这种写法中,单引号包裹的$不会被解析为变量,实际是查询键名为$titulonews的字段,和表中的实际字段名不符,无法取到值
  • 未做查询结果判断:如果SQL查询无结果、执行失败,后续meta标签不会输出,错误未捕获时会直接导致页面空白
  • 条件冗余风险:如果测试的新闻未设置Is_Active=1,会直接查询不到数据

修复后可用代码

<?php
// 调试阶段开启错误提示,上线后可关闭
error_reporting(E_ALL);
ini_set('display_errors', 1);

$catid = intval($_GET['cid']);
// 保持和你body部分一致的数据库连接变量$con
if ($con) {
    // 预处理语句避免SQL注入
    $stmt = mysqli_prepare($con, "SELECT titulonews, completonews, postimage FROM noticiaspt WHERE id_news = ? AND Is_Active = 1 LIMIT 1");
    mysqli_stmt_bind_param($stmt, "i", $catid);
    mysqli_stmt_execute($stmt);
    $result = mysqli_stmt_get_result($stmt);
    if ($row = mysqli_fetch_assoc($result)) {
        $ogTitle = htmlspecialchars($row['titulonews']);
        // 描述截取前200字纯文本,避免og标签内容过长
        $ogDesc = htmlspecialchars(mb_substr(strip_tags($row['completonews']), 0, 200, 'utf-8'));
        $ogImage = htmlspecialchars('http://linktomysite.pt/admbo/postimages/' . $row['postimage']);
?>
<meta property="og:title" content="<?php echo $ogTitle; ?>" />
<meta property="og:image" content="<?php echo $ogImage; ?>" />
<meta property="og:description" content="<?php echo $ogDesc; ?>" />
<?php
    }
    mysqli_stmt_close($stmt);
}
?>

额外注意事项

  • meta标签必须放在页面<head>区块内才能被正确识别
  • 如果你使用了CDN或页面缓存,更新代码后需要清除缓存才能生效
  • 不要直接在og:description中输出完整带HTML标签的新闻内容,避免解析异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 09:18:03