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

如何在页面打印单个字段数据而非完整表格内容(PHP+MySQL+Memcached)

修改后的代码
<?php
// 更改响应类型为HTML,适配指定的输出格式
header("Content-Type:text/html; charset=utf-8");

try {
    $db_name     = 'test_db';
    $db_user     = 'test_db_user';
    $db_password = 'EXAMPLE_PASSWORD';
    $db_host     = 'localhost';

    $memcache = new Memcache();
    $memcache->addServer("127.0.0.1", 11211);

    $sql = 'SELECT
            product_id,
            product_name,
            retail_price
            FROM products
           ';

    $key = md5($sql);
    $cached_data = $memcache->get($key);

    // 优先取缓存数据,无缓存则从数据库拉取
    $products = $cached_data ?: [];
    
    if (empty($products)) {
        $pdo = new PDO("mysql:host=" . $db_host  . ";dbname=" . $db_name, $db_user, $db_password);
        $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

        $stmt = $pdo->prepare($sql);
        $stmt->execute();

        $products = [];
        while (($row = $stmt->fetch(PDO::FETCH_ASSOC)) !== false) {
            $products[] = $row;
        }

        // 将数据库数据存入Memcached,有效期5秒
        $memcache->set($key, $products, false, 5);
    }

    // 遍历数据,按要求格式输出
    foreach ($products as $row) {
        echo "<br> id: ". $row["product_id"]
             . " - Name: ". $row["product_name"] . " "  
             . " - Price: ". $row["retail_price"] . "<br>";
    }

} catch(PDOException $e) {
    // 异常时输出HTML格式的错误提示
    echo "<div style='color:red;'>数据库错误:" . $e->getMessage() . "</div>";
}
?>

核心修改点说明

  • 调整响应头:把原来的application/json改成text/html,确保浏览器能正确解析输出的HTML内容
  • 移除JSON输出逻辑:不再构建JSON响应数组,直接遍历缓存/数据库数据输出指定格式
  • 简化缓存判断:用?:运算符简化缓存数据的存在性判断,代码更简洁
  • 异常输出适配:把JSON格式的错误提示改成HTML格式,和整体输出风格统一

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 13:36:29