sqlsrv_query未按预期工作

时间:2018-01-30 07:23:33

标签: php sql-server sqlsrv

我现在正在接受职业培训,我的任务是为会计创建一个网络公式。服务器在Windows Server 2012 R2,PHP 7.2.1上运行IIS 6.2,我终于运行了MS PHP SQL Extension

除了我的代码是一个stackowerflow拼凑,它有点工作,只是我不知道我错误的查询。在提交公式时,它表示交易回滚,我真的不知道为什么。当粘贴到MS SQL Server Management Studio中时,查询已成功执行,但不在表单中。

$serverName = "server\sqlexpress";
$connOptions = array( "Database"=>"123", "UID"=>"456", "PWD"=>"xxx");
$conn = sqlsrv_connect( $serverName, $connOptions );

if( $conn === false ) {
    die( print_r( sqlsrv_errors(), true ));
}
if ( sqlsrv_begin_transaction( $conn ) === false ) {
     die( print_r( sqlsrv_errors(), true ));
}

/* This is the query */
$sql1 = "INSERT INTO Person (Kundennummer, Vorname, Nachname, Strasse, Hausnummer, Etage, Email) VALUES (?, ?, ?, ?, ?, ?, ?)";
$params1 = array($kundennummer, $vorname, $nachname ,$strasse, $hausnummer, $etage, $email);
$query1 = sqlsrv_query( $conn, $sql1, $params1 );

/* This is where it rolls back the transaction */
if($query1) {
    sqlsrv_commit( $conn );
    echo "Transaction committed.<br />";
} 
else {
    sqlsrv_rollback( $conn );
    echo "Transaction rolled back.<br />";
}
sqlsrv_close($conn);

Connection正在运行,因为如果我用$替换$ sql1

$sql1 = "SELECT 'Hello world'";
它说是承诺的。 任何猜测?非常感谢,如果您在我的代码中发现了一些更糟糕的事情,请随时纠正我。

1 个答案:

答案 0 :(得分:0)

突然间我得到了答案。 当我在代码中添加echo(print_r(sqlsrv_errors(), true));时,它表示“对象[...]上的INSERT权限被拒绝”,因此我向用户添加了权限。问题已解决,感谢this answer