Выполнить несколько запросов SQL Server в php - PullRequest
0 голосов
/ 01 марта 2019

Я хотел бы выполнить несколько запросов SQL Server в php, но он не хочет принимать это со мной.Вот мой 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 голосов
/ 01 марта 2019

Вы не можете передать более одного оператора 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
}
...
?>

Примечания:

Драйвер PHP для SQL Server поддерживает несколько наборов результатов.Если вы используете один сложный оператор и один или несколько из ваших операторов являются операторами SELECT, вам нужно вызвать sqlsrv_next_result () , чтобы сделать следующий результат активным (первый результат активен по умолчанию).

...