あなたのエラーは明らかに問題が何であるかを述べるようだ:
ERROR: invalid input syntax for type timestamp: ""
あなたのクエリは「タイムスタンプ」の種類を持っているPostgreSQLのフィールドに空の文字列を挿入しようとして表示されます。
ERROR: invalid input syntax for type timestamp: "foobardtimestamp"
それとも、あなたの期待文字列が渡されていた場合、あなたのケースで、あなたのエラーは次のようになります。あなたはいくつかの種類の無効な文字列を挿入した場合、あなたのようrecievingしていることをエラーに表示されます:
ERROR: invalid input syntax for type timestamp: "2002-03-11"
...しかし、エラーはあなたが思うように私はあなたの文字列が実際にクエリに渡され取得されていない疑いが作るものを言っていません。 PostgreSQLは、有効なタイムスタンプ文字列として
2002-03-11
を完全に処理できるはずです。
PostgreSQLはタイムスタンプとして ''(空の文字列)を挿入するのが好きではなく、入力したエラーに不平を言うでしょう。
空の文字列を指定する場合は、列にNOT NULL
という制約がないことを確認し、空の文字列の代わりにnull
を使用する必要があります。空の文字列を送信する意味がない場合は、$pdo->quote($date)
という値をチェックして、返される文字列を取得していることを確認します。
実際にクエリを実行して正しいかどうかを確認する前に、生成されたSQLを出力することもできます。何が価値があるため、また
INSERT INTO dates(date) VALUES('')
、あなたの例は、あなたが実行していると言う:私は、あなたがしなければ、それはこのようになります、気持ちを持って $pdo->query($date);
、私はかなり確信しているとき、あなたが欲しい:$pdo->query($query);
$ pdoはPDOオブジェクトを指していますか?呼び出し元の戻り値は何ですか? – Zed
はい、言及を忘れました。 $ pdoはpdoオブジェクトを指します – Roland