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
}
}
解決策: まだ検討中ですが、正規表現を使用する準備をしてください。