使用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
我在这里失去了一些东西?
答
我找到了我的解决方案。我不知道为什么这个工作时,我的原始代码没有。
我需要使用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
您要连接的帐户有哪些权限?除了SELECT以外,数据库返回的错误是什么? – andrewsi
另外,如果pk_person_ID是一个字符串,它会让我感到惊讶。解决方案可以简单到只需将32替换为32 –
并且您的字段名为“person_ame”?这不是一个错字吗? –