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
truehttp://www.bkjia.com/PHPjc/322580.html技術記事 PHP はデータを mysql に保存し、dao 層でデータベースにデータを入力する前に、varchar の Trim や int の intval などのデータをクリーンアップすることを計画しています。 ある日突然、phpのintvalの値の範囲がmysqlのintクラスと同じであることを思い出しました...