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