php数据入库前清理 注意php intval与mysql int 类型区别
来源:互联网 发布:结构 软件 编辑:程序博客网 时间:2024/06/13 22:38
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;
}
}
解决办法:还在想,准备用正则表达式。
打算在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数据入库前清理 注意php intval与mysql int 类型区别
- PHP中(int)与intval()的区别
- php下intval()和(int)转换使用与区别
- php下intval()和(int)转换使用与区别
- php下intval()和(int)转换使用与区别
- php下intval()和(int)转换使用与区别
- php下intval()和(int)转换使用与区别
- PHP intval() 和 (int) 转换的区别
- php中intval()的int转换剖析
- intval PHP
- php intval和floatcal的区别
- 【PHP】PHP取整函数:ceil,floor,round,intval区别
- php intval 函数
- php intval()函数
- 【php】intval()函数
- PHP intval()函数利用
- PHP 查询MySql int类型返回string
- php四舍五入函数(floor、ceil、round与intval)
- 表锁,行锁区别
- linux命令
- 合并两个排好序的单链表
- LoadRunner 技巧之IP欺骗
- 以windows服务为宿主的WCF服务
- php数据入库前清理 注意php intval与mysql int 类型区别
- VS2005批处理调用编译命令
- plist配置说明
- 测试PHP的整型(integer)
- C语言二叉树遍历操作
- fzu2132
- 单元测试的一些总结
- mysql的bigint类型与php的mysql_insert_id函数造成的bug
- [MyEclipse Blue 采用lnk方法安装SVN1.8.3的步骤]