php 데 이 터 를 입고 하기 전에 php intval 과 mysql 의 int 수치 범위 가 다 릅 니 다
dao 층 에서 데이터 입고 전 청 소 를 할 계획 입 니 다. 예 를 들 어 varchar 에서 trim, int 에서 intval 을 진행 할 계획 입 니 다.
어느 날 갑자기 phop intval 의 수치 범위 가 my sql 의 int 형식 과 같 습 니까?
알 아 봤 는데 달라..
http://php.net/manual/en/function.intval.php
http://dev.mysql.com/doc/refman/5.1/zh/column-types.html#numeric-types
pp intval 의 수치 범위: 운영 체제 와 관련 되 고 32 비트 시스템 은 - 2147483648 에서 21474833647 이 며 64 비트 시스템 은 - 922337203654775808 에서 92233736854775807 이다.
my sql int 수치 범위: 운영 체제 와 상 관 없 이 - 2147483648 에서 21474833647 이 고 기호 가 없 으 면 0 에서 4294967295 입 니 다.
my sql bigint 수치 범위: 운영 체제 와 상 관 없 이 - 922337203685475808 에서 92233736854775807 까지 기호 가 없 으 면 0 에서 1844674407379551615 이다.
그래서 아래 코드 가 잘못 되 었 습 니 다.
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)).")";
$this->db->query($sql);
$id = $this->db->lastInsertId();
if(empty($id))
{
return false;
}
else
{
return $id;
}
}
해결 방법: 정규 표현 식 을 사용 할 생각 입 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.