php 格式化数字的时候注意数字的范围
2015-01-24信息快讯网
因为 数据库中 id 可能会很大 如果使用%d的话,就可能出现因为超出了范围,而到不到正确的结果。所以,个人建议 对id进行格式化的时候 使用%.0f 比 %d 要 好的多。
构造sql语句是 比起来$sql = 'SELECT * FROM sdb_comments WHERE goods_id = '.intval($goods_id).' AND for_comment_id IS NULL AND object_type = ".$item." AND disabled="false" AND display = "true"';
我更喜欢这样做:
$sql = sprintf('SELECT * FROM sdb_comments WHERE goods_id = %.0f AND for_comment_id IS NULL AND object_type = "%s" AND disabled="false" AND display = "true"', (float)$goods_id, $item);
这个语句还算 简单,如果是更复杂的话,用拼接字符串的话,那简直就是一个噩梦。
使用第二种方式的话,比较方便.但是一个小问题:在格式化数字的时候就需要注意其取值范围。数字操作了取值反问。那么最后返回的sql 也不是我们需要的。
我今天做了个总结:
%d: 2^31~2^31-1(-2147483648~2147483647) (将int转化为有符号十进制)
%b:二进制(将int类型的转化为二进制)
%c:字符(将int类型转化为字符)
%u: 2^32-1(0 ~ 4294967295) (将int转化为有符号十进制)
%f: -2^128-2^128(-3.4E38 ~+3.4E38)(将float转化为float) 本地化
%F: -2^128-2^128(-3.4E38 ~+3.4E38)(将float转化为float) 非本地化
%o (将int转化为八进制)
%s:字符串
%x:将int转化为小写字母的十六进制
%X:将int转化为大写字母的十六进制
因为 数据库中 id 可能会很大 如果使用%d的话,就可能出现因为超出了范围,而到不到正确的结果。所以,个人建议 对id进行格式化的时候 使用%.0f 比 %d 要 好的多。
PHP 防注入函数(格式化数据)
PHP查询MySQL大量数据的时候内存占用分析
PHP的范围解析操作符(::)的含义分析说明
php判断输入不超过mysql的varchar字段的长度范围
PHP无限分类代码,支持数组格式化、直接输出菜单两种方式
PHP与C#分别格式化文件大小的代码
使用GROUP BY的时候如何统计记录条数 COUNT(*) DISTINCT
php数据入库前清理 注意php intval与mysql的int取值范围不同
php下封装较好的数字分页方法
《PHP编程最快明白》第二讲 数字、浮点、布尔型、字符串和数组
PHP,ASP.JAVA,JAVA代码格式化工具整理
PHP 金额数字转换成英文
PHP中防止SQL注入攻击和XSS攻击的两个简单方法
在IIS7.0下面配置PHP 5.3.2运行环境的方法
php下关于中英数字混排的字符串分割问题
php Smarty date_format [格式化时间日期]
php学习之 认清变量的作用范围
php 全局变量范围分析
php cookie 作用范围C不要在当前页面使用你的cookie
php自动适应范围的分页代码
php下实现一个阿拉伯数字转中文数字的函数
韩正:补短板,已经到了非抓不可的时候