我现在正在接受职业培训,我的任务是为会计创建一个网络公式。服务器在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'";
它说是承诺的。
任何猜测?非常感谢,如果您在我的代码中发现了一些更糟糕的事情,请随时纠正我。
答案 0 :(得分:0)
突然间我得到了答案。
当我在代码中添加echo(print_r(sqlsrv_errors(), true));
时,它表示“对象[...]上的INSERT权限被拒绝”,因此我向用户添加了权限。问题已解决,感谢this answer