上一篇
想象你正在刷某宝APP,首页突然弹出“您关注的商品降价啦!”的提示——这背后,正是服务器通过JSON格式将数据库中的价格变动数据“快递”给了你的手机客户端!咱们就来聊聊这个“发快递”的全流程,让你从原理到代码一次性搞懂!
<?php // 连接MySQL数据库(2025年推荐使用PHP 8.3+) $pdo = new PDO('mysql:host=localhost;dbname=shop', 'root', 'password'); // 1. 编写SQL:查降价商品(带分页) $sql = "SELECT id, name, price FROM goods WHERE discount > 0 LIMIT :offset, :limit"; $stmt = $pdo->prepare($sql); // 2. 绑定参数:防SQL注入! $stmt->bindValue(':offset', 0, PDO::PARAM_INT); $stmt->bindValue(':limit', 10, PDO::PARAM_INT); $stmt->execute(); // 3. 获取结果:转为关联数组 $goodsList = $stmt->fetchAll(PDO::FETCH_ASSOC); ?>
PDO::ATTR_EMULATE_PREPARES
自动优化预处理,性能提升30%!$stmt->errorInfo()
捕获数据库级错误,比try-catch
更轻量。<?php // 1. 基础打包:中文不转义! $jsonData = json_encode($goodsList, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT); // 2. 高级玩法:自定义序列化(比如隐藏敏感字段) class SecureGoods implements JsonSerializable { public function jsonSerialize() { return [ 'id' => $this->id, 'name' => $this->name, 'price' => $this->price // 敏感字段如成本价可在此过滤 ]; } } // 3. 错误检测:非UTF-8字符? if (json_last_error() !== JSON_ERROR_NONE) { die("JSON打包失败:" . json_last_error_msg()); } ?>
JSON_BIGINT_AS_STRING
防止大整数精度丢失(比如订单ID超过18位时)。<?php // 1. 告诉客户端:“这是JSON格式的数据!” header('Content-Type: application/json; charset=utf-8'); // 2. 发送数据:支持压缩(2025年推荐) if (isset($_SERVER['HTTP_ACCEPT_ENCODING']) && strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'br') !== false) { header('Content-Encoding: br'); // Brotli压缩,体积减少60%! $jsonData = brencode($jsonData); } echo $jsonData; ?>
// 1. 用Fetch API“收快递” fetch('/api/goods') .then(response => response.json()) .then(data => { console.log('收到商品数据:', data); // 2. 渲染到页面 updateUI(data); }) .catch(error => console.error('快递丢失:', error));
filter_var($_GET['page'], FILTER_VALIDATE_INT)
防止分页参数注入。<script>
等特殊字符转义,避免XSS!json_encode(chunk)
分块发送,客户端逐块解析。你已经掌握了2025年最前沿的JSON传输技巧!下次刷到“降价提醒”时,不妨想想:这背后可能正是你写的代码在跑哦~ 😉
本文由 业务大全 于2025-08-18发表在【云服务器提供商】,文中图片由(业务大全)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://up.7tqx.com/wenda/650659.html
发表评论