关于冰盾 | 使用条款 | 网站地图
 
php数据入库前清理 注意php intval与mysql的int取值范围不同
php数据入库前清理 注意php intval与mysql的int取值范围不同
作者:冰盾防火墙 网站:www.bingdun.com 日期:2014-11-29
 
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; 
} 
} 

解决办法:还在想,准备用正则表达式。
 

 
最新内容:
Windows 7下管理员权限获取[2014-11-29]
入侵网站必备Sql语句[2014-11-29]
网站入侵技术综合总结[2014-11-29]
教你破解系统登陆密码超简单[2014-11-29]
windows下dos攻击、入侵的一些命令讲解[2014-11-29]
防止黑客入侵Windows XP常用的方法[2014-11-29]
相关内容:

合作伙伴: 黑基网 补天科技 威盾科技 站长下载 新飞金信 北京电信 ZOL应用下载
中华人民共和国增值电信业务经营许可证京ICP备14024464 公安备案号 京1081234 
版权所有©2003-2014 冰盾防火墙  www.BingDun.com 法律声明
总机:(010)51661195