그래서 (PDO의 상단에 내장) 내 자신의 MySQL의 클래스와 데이터베이스로 일부 데이터를 삽입하려고하지만 난 좀 이상한 오류가MySQL의 쿼리 반환 이상한 오류
(!) Fatal error: Uncaught PDOException: SQLSTATE[22007]: Invalid datetime format: 1366 Incorrect integer value: 'Google Chrome' for column 'user_id' at row 1 in C:\wamp64\www\LVWeb\Core\Database\database.mysql-pdo.php on line 44
(!) PDOException: SQLSTATE[22007]: Invalid datetime format: 1366 Incorrect integer value: 'Google Chrome' for column 'user_id' at row 1 in C:\wamp64\www\LVWeb\Core\Database\database.mysql-pdo.php on line 44
표 구조 점점 keed : http://prntscr.com/c3pgzi
내 쿼리 기능 :
public function Query($query, $vars = []){
$Statement = $this -> con -> prepare($query);
if(is_array($vars))
foreach($vars AS $key => $val){
if(is_string($val))
$Statement->bindParam($key, $val, PDO::PARAM_STR);
else if(is_integer($val))
$Statement->bindParam($key, $val, PDO::PARAM_INT);
}
return $Statement->execute();
}
내가 데이터를 삽입 할 부분 :
을- $ 세션 = 문자열
- $ 응답 [ 'ID'] = 정수
- GetIp() = 문자열 :
$a = "INSERT INTO sessions (ses_id, user_id, ip, os, browser) VALUES (:ses_id, :user_id, :ip, :os, :browser)"; $this->DB->Query($a, [ ':ses_id' => $session, ':user_id' => $response['ID'], ':ip' => GetIp(), ':os' => GetOS(), ':browser' => GetBrowser()['name'] ]);
그래서 나는 모든 사람들이 올바른 유형 있는지 알아 변수를 테스트 한
- GetOs() = 문자열 가
- GetBrowser() '이름'] = 문자열
'구글 크롬'문자열입니다. interger하지 –
이상한 오류가 있습니까? 그들은 더 명확해질 수 없다. 그것은 심지어 당신에게 말한다. 당신은 정수로'Chrome '을 공급하려했습니다. 당신은 고전적인 실수를 저질렀던 바보 같은 코드를 만들어 PDO를 "더 좋게"만들려고했습니다. 함수를 덤프하고 준비된 문을 직접 사용하십시오. –