ホームページ > バックエンド開発 > PHPチュートリアル > php データをデータベースに入力する前にクリーンアップしてください。php intval の int 値の範囲は、mysql_PHP チュートリアルの int 値の範囲とは異なることに注意してください。

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

WBOY
リリース: 2016-07-21 15:33:34
オリジナル
1166 人が閲覧しました

PHP はデータを mysql に保存します
varchar の Trim や int の intval など、dao 層でデータベースにデータを入力する前にデータをクリーンアップすることが計画されています。
ある日突然思い出したのですが、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'] = トリム($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;
}
解決策: 正規表現を使用する準備をします。


http://www.bkjia.com/PHPjc/322580.html

www.bkjia.com

http://www.bkjia.com/PHPjc/322580.html技術記事 PHP はデータを mysql に保存し、dao 層でデータベースにデータを入力する前に、varchar の Trim や int の intval などのデータをクリーンアップすることを計画しています。 ある日突然、phpのintvalの値の範囲がmysqlのintクラスと同じであることを思い出しました...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート