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

问题描述:

我目前正在构建一个PHP站点,该站点必须通过ODBC连接连接到数据源。数据源不常见,驱动程序由客户提供(不,他们不知道它是如何工作的:))。ODBC INSERT/UPDATE语句触发内部服务器错误(500)

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

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

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

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

上述语句返回内部服务器错误。它只是说,错误与odbc_execute()命令有关。我检查了Apache错误日志,并且没有关于可能导致错误的信息。

我检查了存放测试数据库的文件夹(因为数据库只是一堆没有扩展名和.IDX文件的文件,我的猜测是.IDX文件是实际DB文件的索引文件)并且它们都不是只读的。

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

我不认为在SQL语句中存在错误,因为我尝试添加语法错误,并且收回了有关错误的描述性错误。

我不能使用odbc_error($connection);,因为我在到达该行之前出现内部服务器错误。

有什么建议可能是错的?我会感激每一个提示在正确的方向:)

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

+0

好吧,我会成为一个枪的儿子:),真的有更多的选择。我没有找到“只读”或“Execute Proc”选项,但是我确实发现了一些类似的东西(“Nur lesender zugriff auf die tabellemöglich”,德文是“只允许读表访问”)。只要我有时间今天,我会尝试使用这些选项,如果它会工作,我会立即接受你的答案:)。谢谢你的建议 – itd

+0

是的,那是原因。再次谢谢你 :) – itd