Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法使用PHP ODBC连接写入MS SQL数据库_Php_Sql Server 2005_Insert_Odbc - Fatal编程技术网

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

无法使用PHP ODBC连接写入MS SQL数据库,php,sql-server-2005,insert,odbc,Php,Sql Server 2005,Insert,Odbc,问题:我可以使用odbc_exec在PHP中成功地使用select查询,但是,我无法执行插入或更新查询 资源:WindowsServer2003:IIS6,SQLServer2005 这是我的密码: <?php require('../_DSN/DSN_M.php'); $cnnOra = odbc_connect($strarrDSN['dsn'], $strarrDSN['username'], $strarrDSN['pswd']); $res_slct = odbc_exec($

问题:我可以使用odbc_exec在PHP中成功地使用select查询,但是,我无法执行
插入或更新
查询

资源:WindowsServer2003:IIS6,SQLServer2005

这是我的密码:

<?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); 
?>

我在这里遗漏了什么吗?

我找到了解决办法。我不知道为什么我的原始代码不起作用

我需要使用odbc\u prepare和odbc\u 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());

这也适用于插入到
查询中的
。非常感谢@andrewsi

您正在连接的帐户的权限是什么?当您尝试除SELECT之外的任何操作时,数据库返回的错误是什么?另外,如果pk_person_ID是字符串,我会感到惊讶。解决方案可以简单到将“32”替换为32。您的字段是否命名为“person_-ame”???这不是打字错误吗?我连接的SQL帐户具有写入数据库的权限。pk_Person_ID不是一个字符串,它是一个int。但是,我尝试过使用单引号和不使用单引号,它不会改变结果。我已经使用SQLDeveloper完全按照键入的方式运行了更新SQL,它执行得很好。person_name在这里是一个输入错误,但不在脚本中…@andrewsi我似乎无法显示任何错误。顺便说一句:一旦我开始使用此代码,它就开始返回错误消息。
$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());