如何在页面打印单个字段数据而非完整表格内容(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
相关产品推荐
相关产品推荐

