ODBC INSERT/UPDATE 语句触发内部服务器错误 (500)

ODBC INSERT/UPDATE statements trigger internal server error (500)

我目前正在构建一个 PHP 站点,该站点必须通过 ODBC 连接连接到数据源。数据源不常见,驱动程序由客户提供(不,他们不知道它是如何工作的:))。

我能够成功连接到测试数据源并且 SELECT 语句工作正常。例如,这有效:

$resource = odbc_prepare($connection,'SELECT * FROM [TABLE] WHERE EMAIL=?');
$success = odbc_execute($res,array('some@email');

我能够从数据库中读取任何信息。但是,INSETR/UPDATE 语句似乎不起作用:

$resource = odbc_prepare($connection,'UPDATE [TABLE] SET EMAIL=? WHERE ID=?');
$success = odbc_execute($res,array('some@email',1);

以上语句returns一个内部服务器错误。它只是说,错误链接到 odbc_execute() 命令。我检查了 Apache 错误日志,没有关于可能导致错误的信息。

我检查了存储测试数据库的文件夹(因为数据库只是一堆没有扩展名的文件和 .IDX 文件。我的猜测是,.IDX 文件是实际数据库的索引文件文件),其中 none 是只读的。

另外,我给了匿名用户修改DB文件夹内容的权限(我很绝望),没有效果。

我认为 SQL 语句中没有错误,因为我尝试添加一个语法错误,但我得到了关于错误内容的描述性错误。

我无法使用 odbc_error($connection);,因为我在到达该行之前收到内部服务器错误。

有什么错误的建议吗?我将不胜感激每一个正确方向的提示:)

您需要查看 ODBC 连接。根据您在该服务器上的 Windows 版本,您想打开 Data Sources (ODBC)。 Select 您正在使用的别名。右键单击并 select 配置/编辑(可能有一个按钮说配置)。检查 Read Only 是否未勾选,Execute Proc 是否已勾选。