php データをデータベースに入力する前にクリーンアップしてください。php intval の int 値の範囲は mysql の値の範囲とは異なることに注意してください。

WBOY
リリース: 2016-06-21 08:55:58
オリジナル
1204 人が閲覧しました

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 ビット システムでは -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)).")"; $sql);
$id = $this->db->lastInsertId();
if(empty($id))
{
return false; >else
{
return $id
}
}


解決策: まだ検討中ですが、正規表現を使用する準備をしてください。



関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート