ホームページ  >  記事  >  バックエンド開発  >  PHPの整数オーバーフローに関連する問題

PHPの整数オーバーフローに関連する問題

WBOY
WBOYオリジナル
2016-06-13 13:33:401828ブラウズ

PHP整数オーバーフローの問題
今日プログラムを書いていて、挿入したMYSQLデータがPOSTと矛盾していることがデバッグ時に分かりました、データ変換時のエラーであることが分かりました

例えば、次のようにしたいです。携帯電話番号を int に変換します。この携帯電話番号は、携帯電話番号でない場合は false になります。以前は、
if(intval など) を使用する方が簡単でした。 ('13688017729'))
... 次に

を続けて
echo intval('13688017729') を見つけます。この文は 13688017729

と等しくありません。 PDO は機能します。このバグを改善および変更する方法を教えてください。

if (array_key_exists($key, $ data)) {
if (isset($data[$key])) {
if ($table_column[$key]["d_type"] == "10 進数" || $table_column[$key][ "d_type"] == "double") {
$newdata[$key] = doubleval( $data[$key]);
} elseif ($table_column[$key]["d_type"] == "int" || $table_column[$key]["d_type"] == "smallint" || $table_column[$key]["d_type"] == "tinyint" || $table_column[$key]["d_type "] == "mediumint" || $table_column[$key]["d_type"] == " bigint") {
$newdata[$key] = intval($data[$key]);
} elseif ($table_column[$key]["d_type"] == "float") {
$newdata[$key] = floatval($data[$key]);
} else {
$newdata[$key] = $data[$key];
}
}
}


------解決策------ -------------これはできません!携帯電話番号が整数の表現範囲を超えています
すべてが数字で構成されているかどうかを確認するには、is_numeric 関数または通常の関数を使用できます。

------解決策----------------------このエラーは、データベースの長さがオーバーフローしたために発生するのではなく、データベースの長さがオーバーフローしたために発生します。型変換。したがって、携帯電話番号を保存したい場合は、フィールドの型を bigint

に変更できます。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。