使用PHP ODBC连接无法写入MS SQL数据库

问题描述:

问题:我可以使用odbc_exec在PHP中成功使用select查询,但是我无法执行INSERT INTO or UPDATE查询。使用PHP ODBC连接无法写入MS SQL数据库

资源:在Windows Server 2003:IIS 6,SQL Server 2005中

这里是我的代码:

<?php 
require('../_DSN/DSN_M.php'); 

$cnnOra = odbc_connect($strarrDSN['dsn'], $strarrDSN['username'], $strarrDSN['pswd']); 
$res_slct = odbc_exec($cnnOra, " select * FROM person;") or die (odbc_errormsg()); 

odbc_result_all($res_sldr); 

$sqlupd = "UPDATE person SET person_ame='Steve Woz' WHERE pk_person_ID = '32';" 

$res_upd = odbc_exec($cnnora, $sqlupd) or die(odbc_errormsg());  
$res_cmt = odbc_commit($cnnora); 

var_dump($res_upd); 
var_dump($res_slct); 
var_dump($res_cmt); 

// close the connection 
odbc_close($cnnOra); 
?> 

SELECT查询显示的输出,并没有对任何ERRORMSG或结果的var_dump页。

下面是来自SELECT查询的输出:

pk_person_ID fk_SSN fk_qual1_ID fk_qual2_ID person_Name 
31   999999999 1   1   bobby buchier 
32   999999999 2   2   Frank Gifford 

我在这里失去了一些东西?

+2

您要连接的帐户有哪些权限?除了SELECT以外,数据库返回的错误是什么? – andrewsi

+1

另外,如果pk_person_ID是一个字符串,它会让我感到惊讶。解决方案可以简单到只需将32替换为32 –

+0

并且您的字段名为“person_ame”?这不是一个错字吗? –

我找到了我的解决方案。我不知道为什么这个工作时,我的原始代码没有。

我需要使用odbc_prepare,然后使用odbc_exec。这里是我工作的代码:

$q = "UPDATE person SET person_name = 'Steve Woz' WHERE pk_person_ID = '32'"; 
$res = odbc_prepare ($cnnOra, $q) or die (odbc_errormsg()); 
$exc = odbc_execute($res) or die (odbc_errormsg()); 

这也适用于INSERT INTO查询。非常感谢@andrewsi!

+0

顺便说一句:一旦我开始使用此代码,它开始返回错误消息。 – user2283350