1

PHPでは、ODBCを使用してAccessデータベースに接続しています。いくつかのフィールドを問題なく更新していますが、そのうちの2つを機能させるのに時間がかかります。

最初のものは、アクセス中の日付/時刻タイプです。

2つ目は、アクセス中のメモタイプです。

$mdbFilename = "pathTo.mdb";
$cimdb = odbc_connect("Driver={Microsoft Access Driver (*.mdb)};Dbq=$mdbFilename", $user, $password);

$sqlInsert = "UPDATE MyTable ";
$sqlInsert .= "SET ";
$sqlInsert .= "Time='07:30:00 AM', ";
$sqlInsert .= "Note='My really long note here...' ";
$sqlInsert .= " WHERE ID=777";
$res = odbc_exec($cimdb, $sqlInsert);

コードは....を生成します。

UPDATE MyTable SET Time='07:30:00 AM', Note='My really long note here...' WHERE ID=555  

キャストから変換、さまざまなタイプの間隔/フォーマットまで、非常に多くのことを試しました。私は本当に誰かが以前にこれをしたことを願っています。

私が本当に知る必要があるのは、アクセスDBが入力を受け入れるようにするために、どの形式でデータを入力するのかということです。

これがスローするエラーです...

Warning: odbc_exec() [function.odbc-exec]: SQL error: [Microsoft][ODBC Microsoft Access Driver] Syntax error in UPDATE statement., SQL state 37000 in SQLExecDirect in H:\web\count\countInject.php on line 116
SQL statement failed with error: 37000: [Microsoft][ODBC Microsoft Access Driver] Syntax error in UPDATE statement.

これを読んでくれて本当にありがとう、そしてあなたが私を助けてくれたら二重に感謝します=)

4

1 に答える 1

2

デバッグするときは、問題を可能な限り小さなチャンクに分割すると便利です。たとえば、適切な問題をトラブルシューティングしていることを確認するために、日時の更新をメモの更新から分離することは可能ですか?

Access の日時値の場合、 Access SQL の日時値の書式設定から #yyyy-mm-dd HH:MM:SS# の形式が必要です。delphi ビットは無視して、PHP に変換するだけです。

メモの場合、本当の特別なトリックはないようです。ただし、ソースでエスケープされていない括弧に遭遇する可能性があります。

于 2011-09-20T02:44:01.030 に答える