php數(shù)據(jù)入庫前清理 注意php intval與mysql的int取值范圍不同
更新時(shí)間:2010年12月12日 19:15:51 作者:
php數(shù)據(jù)入庫前清理 注意php intval與mysql的int取值范圍不同,需要的朋友可以參考下。
php保存數(shù)據(jù)到mysql
打算在dao層進(jìn)行數(shù)據(jù)入庫前的清理,比如varchar進(jìn)行trim,int進(jìn)行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的取值范圍:與操作系統(tǒng)相關(guān),32位系統(tǒng)上為-2147483648到2147483647,64位系統(tǒng)上為-9223372036854775808到9223372036854775807。
mysql int取值范圍:與操作系統(tǒng)無關(guān),為-2147483648到2147483647,無符號(hào)為0到4294967295。
mysql bigint取值范圍:與操作系統(tǒng)無關(guān),為-9223372036854775808到9223372036854775807,無符號(hào)為0到18446744073709551615。
所以下面的代碼是錯(cuò)誤的:
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;
}
}
解決辦法:還在想,準(zhǔn)備用正則表達(dá)式。
打算在dao層進(jìn)行數(shù)據(jù)入庫前的清理,比如varchar進(jìn)行trim,int進(jìn)行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的取值范圍:與操作系統(tǒng)相關(guān),32位系統(tǒng)上為-2147483648到2147483647,64位系統(tǒng)上為-9223372036854775808到9223372036854775807。
mysql int取值范圍:與操作系統(tǒng)無關(guān),為-2147483648到2147483647,無符號(hào)為0到4294967295。
mysql bigint取值范圍:與操作系統(tǒng)無關(guān),為-9223372036854775808到9223372036854775807,無符號(hào)為0到18446744073709551615。
所以下面的代碼是錯(cuò)誤的:
復(fù)制代碼 代碼如下:
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;
}
}
解決辦法:還在想,準(zhǔn)備用正則表達(dá)式。
您可能感興趣的文章:
- mysql創(chuàng)建表添加字段注釋的實(shí)現(xiàn)方法
- mysql創(chuàng)建表的sql語句詳細(xì)總結(jié)
- django連接mysql數(shù)據(jù)庫及建表操作實(shí)例詳解
- mysql中TINYINT的取值范圍
- MySQL表字段時(shí)間設(shè)置默認(rèn)值
- 詳解Mysql數(shù)據(jù)庫date, datetime類型設(shè)置0000-00-00默認(rèn)值(default)報(bào)錯(cuò)問題
- mysql中datetime類型設(shè)置默認(rèn)值方法
- 解析MySQL設(shè)置當(dāng)前時(shí)間為默認(rèn)值的方法
- MySQL建表設(shè)置默認(rèn)值/取值范圍的操作代碼
相關(guān)文章
PHP觀察者模式原理與簡(jiǎn)單實(shí)現(xiàn)方法示例
這篇文章主要介紹了PHP觀察者模式原理與簡(jiǎn)單實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了php觀察者模式的概念、原理、實(shí)現(xiàn)方法及相關(guān)注意事項(xiàng),需要的朋友可以參考下2017-08-08淺談web上存漏洞及原理分析、防范方法(文件名檢測(cè)漏洞)
本篇文章是對(duì)web上存漏洞及原理分析、防范方法(文件名檢測(cè)漏洞)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06php編寫的抽獎(jiǎng)程序中獎(jiǎng)概率算法
本文給大家分享的是php中獎(jiǎng)概率算法,可用于刮刮卡,大轉(zhuǎn)盤等抽獎(jiǎng)算法。用法很簡(jiǎn)單,代碼里有詳細(xì)注釋說明,一看就懂,有需要的小伙伴參考下吧。2015-05-05