【问题标题】:Executing Multiple MSSQL Queries with PHP at once使用 PHP 一次执行多个 SQL 查询
【发布时间】:2012-11-09 11:14:15
【问题描述】:

我在 PHP 中一次执行大量 ms_sql 查询时遇到问题:

以下是我正在尝试做的简化版本:

$updatesql = "UPDATE Pricing SET Price = '".$_POST['price1']."' WHERE PriceID = 1 ";
$updatesql = "UPDATE Pricing SET Price = '".$_POST['price2']."' WHERE PriceID = 2 ";
$updatesql = "UPDATE Pricing SET Price = '".$_POST['price3']."' WHERE PriceID = 3 ";
$updatesql = "UPDATE Pricing SET Price = '".$_POST['price4']."' WHERE PriceID = 4 ";
$updatesql = "UPDATE Pricing SET Price = '".$_POST['price5']."' WHERE PriceID = 5 ";
$updatesql = "UPDATE Pricing SET Price = '".$_POST['price6']."' WHERE PriceID = 6 ";
$updatesql = "UPDATE Pricing SET Price = '".$_POST['price7']."' WHERE PriceID = 7 ";
$updatesql = "UPDATE Pricing SET Price = '".$_POST['price8']."' WHERE PriceID = 8 ";

$executesql = mssql_query($updatesql);

当我一一浏览它们时,它们都可以工作,但是当我尝试一次执行它们时,似乎只有 LAST 查询被执行。

我正在尝试做的事情可能吗?任何指示我哪里出错了?抱歉,对 PHP 来说还很陌生。

【问题讨论】:

  • 您正在用下一个查询覆盖每个查询。
  • 还在每个查询的末尾添加;

标签: php sql-server


【解决方案1】:

那是因为您每次都重写查询字符串。请尝试以下操作:

    $updatesql = '';
    for ($i = 1; $i < 9; $i++) {
        $updatesql .= "UPDATE Pricing SET Price = '".$_POST['price' + $i]."' WHERE PriceID = {$i}; ";
    }
    $executesql = mssql_query($updatesql);

【讨论】:

  • 这不会一次执行查询。此外,只有当查询总是像这样递增时才会起作用
【解决方案2】:

你正在用新的查询覆盖你自己的查询,所以最后只有你创建的最后一个查询将只在那个变量中。

因此您无法执行所有操作,要执行所有操作,您必须选择循环或 ;用mysql的方法。

即使您可以在查询之前编写 mysql_query,以便更新所有查询。

$updatesql = mssql_query("UPDATE Pricing SET Price = '".$_POST['price1']."' WHERE PriceID = 1 ");
$updatesql = mssql_query"UPDATE Pricing SET Price = '".$_POST['price2']."' WHERE PriceID = 2 ");
$updatesql = mssql_query"UPDATE Pricing SET Price = '".$_POST['price3']."' WHERE PriceID = 3 ");
$updatesql = mssql_query"UPDATE Pricing SET Price = '".$_POST['price4']."' WHERE PriceID = 4 ");
$updatesql = mssql_query"UPDATE Pricing SET Price = '".$_POST['price5']."' WHERE PriceID = 5 ");
$updatesql = mssql_query"UPDATE Pricing SET Price = '".$_POST['price6']."' WHERE PriceID = 6 ");
$updatesql = mssql_query"UPDATE Pricing SET Price = '".$_POST['price7']."' WHERE PriceID = 7 ");
$updatesql = mssql_query"UPDATE Pricing SET Price = '".$_POST['price8']."' WHERE PriceID = 8 ");

// $executesql = mssql_query($updatesql);

有很多方法可以在单个语句中执行查询。

【讨论】:

    【解决方案3】:

    试试这个

    $updatesql = "UPDATE Pricing SET Price = '".$_POST['price1']."' WHERE PriceID = 1 ;";
    $updatesql.= "UPDATE Pricing SET Price = '".$_POST['price2']."' WHERE PriceID = 2 ;";
    $updatesql.= "UPDATE Pricing SET Price = '".$_POST['price3']."' WHERE PriceID = 3 ;";
    $updatesql.= "UPDATE Pricing SET Price = '".$_POST['price4']."' WHERE PriceID = 4 ;";
    $updatesql.= "UPDATE Pricing SET Price = '".$_POST['price5']."' WHERE PriceID = 5 ;";
    $updatesql.= "UPDATE Pricing SET Price = '".$_POST['price6']."' WHERE PriceID = 6 ;";
    $updatesql.= "UPDATE Pricing SET Price = '".$_POST['price7']."' WHERE PriceID = 7 ;";
    $updatesql.= "UPDATE Pricing SET Price = '".$_POST['price8']."' WHERE PriceID = 8 ;";
    
    $executesql = mssql_query($updatesql);
    

    【讨论】: