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

如何计算MySQL中已插入文章$body字段的大小(KB)

计算博客文章$body字段的大小(KB单位)

嘿,我来帮你搞定这个计算文章内容大小的需求!分两种场景给你解决方案,不管是插入前提前计算,还是插入后从数据库里查询都能轻松实现:

一、插入前直接在PHP中计算$body的大小

因为$body是你PHP代码里的变量,直接用strlen()函数就能获取它的字节数(这才是对应实际存储的大小,毕竟不同编码比如UTF-8下一个中文字符占3字节),然后除以1024转成KB就行:

// 计算$body的字节长度
$byteLength = strlen($body);
// 转换为KB,保留2位小数更直观
$kbSize = round($byteLength / 1024, 2);

// 输出结果示例
echo "当前文章内容大小:{$kbSize} KB";

二、插入后从MySQL数据库查询已存文章的大小

如果已经把文章插入数据库了,想用SQL直接查指定文章的$body字段大小,可以用MySQL的LENGTH()函数(注意别和CHAR_LENGTH()搞混,后者是字符数,不是字节数),再转成KB:

-- 替换[你的文章ID]为实际的post_id值
SELECT ROUND(LENGTH(body)/1024, 2) AS body_size_kb 
FROM tbl_post 
WHERE post_id = [你的文章ID];

进阶优化:插入时同步存储大小

如果以后经常需要查看文章大小,建议给tbl_post加一个专门的字段存储KB值,这样不用每次都计算:

  1. 先给表加字段:
ALTER TABLE tbl_post ADD COLUMN body_size_kb DECIMAL(10,2) DEFAULT 0 COMMENT '文章内容大小(KB)';
  1. 插入时把计算好的大小一起存进去:
$byteLength = strlen($body);
$kbSize = round($byteLength / 1024, 2);

// 这里强烈建议用预处理语句,避免SQL注入(你的原语句直接拼接变量有安全风险)
$stmt = $conn->prepare("INSERT INTO tbl_post(cat,titile,body,author,tags,body_size_kb) VALUES(?,?,?,?,?,?)");
$stmt->bind_param("sssssd", $cat, $titile, $body, $author, $tags, $kbSize);
$stmt->execute();

注意事项

  • 编码影响:如果你的数据库和PHP用的是UTF-8编码,strlen()和LENGTH()返回的字节数是准确的,对应实际存储的文件大小;
  • 安全提示:一定要替换掉你原代码里直接拼接变量的写法,用预处理语句(PDO或mysqli都可以),不然很容易被SQL注入攻击。

内容的提问来源于stack exchange,提问作者Akjon Bertho Manus

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:24:57