在 php 中运行多个 SQL Server 查询

Posted

技术标签:

【中文标题】在 php 中运行多个 SQL Server 查询【英文标题】:Run multiple SQL Server queries in php 【发布时间】:2019-03-01 07:29:15 【问题描述】:

我想在 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);
       ?>

我取出私人数据并用随机名称替换它。我很高兴有任何帮助。

【问题讨论】:

您是否打算将第二个查询添加到第一个查询(可能与$sql .=.),因为此时它会覆盖它。 【参考方案1】:

您不能将多个语句传递给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() 来激活下一个结果(默认第一个结果是活动的)。

【讨论】:

我现在应该选择哪一个 Zhorov? @Philipp。尝试第一个。 坦克很多 @Zhorov 第一个作品 :-) 你能删除第二个,这样其他人就不会混淆了。 @Philipp。我已经更新了答案和问题的标签(添加了sqlsrv)。 @Zharov 非常感谢!祝你有美好的一天!

以上是关于在 php 中运行多个 SQL Server 查询的主要内容,如果未能解决你的问题,请参考以下文章

PHP 如何从 AJAX 调用中发布多个数组/json 值并在同一个 SQL 查询中运行它们?

如何从SQL表中选择特定行并在SQL Server中连接多个表?

如何编写一个查询以从SQL Server中包含类似名称的多个表中获取数据

使用 PDO 驱动程序 PHP 在 sql-server 查询中循环

SQL查询从多个表返回数据

如何在子查询 SQL Server 中选择多个项目