在php中运行多个SQL Server查询

时间:2019-03-01 07:29:15

标签: php sql sql-server sqlsrv

我想在php中运行几个SQL Server查询,但是他不想接受我的要求。 这是我的php脚本:

<?php
      error_reporting(0);

      $serverName = "SERVERNAME";
      $connectionInfo = array( "UID"=>"Username", "PWD"=>"password", "Database"=>"databasename", "MultipleActiveResultSets"=>true);

      $conn = sqlsrv_connect( $serverName, $connectionInfo);

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

     $sql = "INSERT INTO TABLE (column) VALUES (?)";
     $tsql = "INSERT INTO TABLE_NEW(column, column, column) Values (?, 'INSERT', 'WEBSERVER')";
     $params = array($_POST["addSomething"]);

       $stmt = sqlsrv_query( $conn, $sql, $params, $tsql, $params);
       if( $stmt == false ) {
         die(print_r( sqlsrv_errors(), true));
       }
       else
       {
           echo '<script language="javascript">';
           echo 'alert(Alert what Happend!)';  //not showing an alert box.
           echo '</script>';
       }
       sqlsrv_close($conn);
       ?>

我取出了私人数据,并用随机名称代替了它。我很乐意提供帮助。

1 个答案:

答案 0 :(得分:2)

您不能向sqlsrv_query()传递多个声明。在您的情况下,您有两种选择:

  • 生成一个复杂的T-SQL语句。在这种情况下,占位符的数量必须与传递的参数的数量匹配。
  • 分别执行每个语句

复杂的声明:

<?php
...
$sql = "
    INSERT INTO TABLE (column) VALUES (?); 
    INSERT INTO TABLE_NEW(column, column, column) Values (?, 'INSERT', 'WEBSERVER')
";
$params = array(
    $_POST["addSomething"],
    $_POST["addSomething"]
);
$stmt = sqlsrv_query($conn, $sql, $params);
if ($stmt === false ) {
   # Your code here
} else {
   # Your code here
}
...
?>

注意:

SQL Server的PHP驱动程序支持多个结果集。如果您使用一个复杂的语句,而您的一个或多个语句是SELECT语句,则需要调用sqlsrv_next_result()使下一个结果变为活动状态(默认情况下第一个结果为活动状态)。