php数据入库前清理 注意php intval与mysql的int取值范围不同

2015-01-24信息快讯网

php数据入库前清理 注意php intval与mysql的int取值范围不同,需要的朋友可以参考下。

php保存数据到mysql
打算在dao层进行数据入库前的清理,比如varchar进行trim,int进行intval。
有一天突然想起,php intval的取值范围与mysql的int类型一样吗?
查了一下,不一样……
http://php.net/manual/en/function.intval.php
http://dev.mysql.com/doc/refman/5.1/zh/column-types.html#numeric-types
php intval的取值范围:与操作系统相关,32位系统上为-2147483648到2147483647,64位系统上为-9223372036854775808到9223372036854775807。
mysql int取值范围:与操作系统无关,为-2147483648到2147483647,无符号为0到4294967295。
mysql bigint取值范围:与操作系统无关,为-9223372036854775808到9223372036854775807,无符号为0到18446744073709551615。
所以下面的代码是错误的:
 
public function insert($data) 
{ 
if(isset($data['content'])&&!empty($data['content'])) 
{ 
$data_for_query['content'] = trim($data['content']); 
} 
else 
{ 
return false; 
} 
if(isset($data['user_id'])&&!empty($data['user_id'])) 
{ 
$data_for_query['user_id'] = intval($data['user_id']); 
} 
else 
{ 
return false; 
} 
$sql = "INSERT INTO `".$this->table_name."` (".$this->db->implodeToColumn(array_keys($data_for_query)).") VALUES (".$this->db->implodeToValues(array_values($data_for_query)).")"; 
$this->db->query($sql); 
$id = $this->db->lastInsertId(); 
if(empty($id)) 
{ 
return false; 
} 
else 
{ 
return $id; 
} 
} 

解决办法:还在想,准备用正则表达式。
PHP新手用的Insert和Update语句构造类
phpmyadmin3 安装配置图解教程
MySQL的FIND_IN_SET函数使用方法分享
php提示无法加载或mcrypt没有找到 PHP 扩展 mbstring解决办法
phpMyAdmin 链接表的附加功能尚未激活问题的解决方法(已测)
PHP中将字符串转化为整数(int) intval() printf() 性能测试
PHP运行出现Notice : Use of undefined constant 的完美解决方案分享
JS中encodeURIComponent函数用php解码的代码
MySQL时间字段究竟使用INT还是DateTime的说明
php中echo()和print()、require()和include()等易混淆函数的区别
PHP中集成PayPal标准支付的实现方法分享
PHP中call_user_func_array()函数的用法演示
PHP中register_globals参数为OFF和ON的区别(register_globals 使用详解)
非常好用的两个PHP函数 serialize()和unserialize()
php数组函数序列之array_intersect() 返回两个或多个数组的交集数组
php array_intersect比array_diff快(附详细的使用说明)
hessian 在PHP中的使用介绍
php 高性能书写
PHPwind整合最土系统用户同步登录实现方法
php iconv() : Detected an illegal character in input string
php printf输出格式使用说明
smarty模板嵌套之include与fetch性能测试
php与paypal整合方法
网站用php实现paypal整合方法
paypal即时到账php实现代码
解析PayPal支付接口的PHP开发方式
Windows 下的 PHP-PEAR 安装方法
ubuntu 编译安装php 5.3.3+memcache的方法
PHP中的integer类型使用分析
UCenter中的一个可逆加密函数authcode函数代码
php将会员数据导入到ucenter的代码
PHP print类函数使用总结
php echo()和print()、require()和include()函数区别说明
php中理解print EOT分界符和echo EOT的用法区别小结
©2014-2024 dbsqp.com