1

在 PHP 中,我使用 ODBC 连接到访问数据库。我更新了几个字段没问题,但我很难让其中两个工作。

第一个是访问中的日期/时间类型。

第二个是访问中的备忘录类型。

$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  

我尝试了很多东西,从转换到转换,再到不同类型的间距/格式。我真的希望有人以前做过。

我真正需要知道的是我将数据放入什么格式以使访问数据库接受输入?

这是它抛出的错误......

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 日期时间值,它需要格式为 #yyyy-mm-dd HH:MM:SS# 来自Formatting Date Time Values for Access SQL忽略 delphi 位,只需将其转换为 PHP。

对于Memo来说,它看起来并没有任何真正的特殊技巧。但是,您可能会在源代码中遇到未转义的括号。

于 2011-09-20T02:44:01.030 回答