だから私は(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()[ '名前'] =ストリング
'Google Chromeは' 文字列です。 intergerではない –
奇妙なエラー?彼らはより明確になることはできません..それはあなたにも言います。あなたは整数のために 'Google Chrome 'を供給しようとしました。あなたは古典的な間違いをして、PDOを悪化させるばかげたコードを作成することによってPDOを「より良く」しようとしました。関数をダンプし、準備されたステートメントを直接使用します。 –