PHP文件未执行所有3个查询

时间:2018-11-01 12:12:10

标签: php

我有一个PHP文件,其中包含来自iOS应用程序的POST变量。

我想进行的操作是检查POST变量是否为空。如果没有,我希望它执行我编写的查询。我发现的是它只执行我拥有的3个列表中的最后一个查询。我什至切换了3的顺序,即使所有3均为TRUE,它似乎仍然只执行最后一个。

$item = $_POST['item'];
$price = $_POST['price'];
$salePrice = $_POST['salePrice'];
$newItemUpdate = $_POST['newItemUpdate'];
if(isset($item))
{
    $query = "UPDATE Price_List Set Item = ('".$newItemUpdate."') WHERE Item = ('".$item."')";
}
if(isset($salePrice))
{
    $query = "UPDATE Price_List Set SalePrice = ('".$salePrice."') WHERE Item = ('".$item."')";
}
if(isset($price))
{
    $query = "UPDATE Price_List Set Price = ('".$price."') WHERE Item = ('".$item."')";
}

3 个答案:

答案 0 :(得分:1)

您正在对所有三个查询使用$ query变量,从而导致覆盖前两个变量。 请更改您的变量名或在每种情况下执行查询。

答案 1 :(得分:0)

在进入下一个query之前,先在if条件内执行每个query,或者如果以后要执行它们,则对每个查询使用不同的变量名。如下所示:

    $item = $_POST['item'];
    $price = $_POST['price'];
    $salePrice = $_POST['salePrice'];
    $newItemUpdate = $_POST['newItemUpdate'];
    if(isset($item))
     {
       $query1 = "UPDATE Price_List Set Item = ('".$newItemUpdate."') WHERE Item = 
       ('".$item."')";
     }
   if(isset($salePrice))
    {
      $query2 = "UPDATE Price_List Set SalePrice = ('".$salePrice."') WHERE Item = 
      ('".$item."')";
    }
  if(isset($price))
   {
     $query3 = "UPDATE Price_List Set Price = ('".$price."') WHERE Item = 
     ('".$item."')";
   }

答案 2 :(得分:0)

因为您为query变量使用了相同的名称,这就是为什么最后一个query变量会覆盖两个查询变量以及它只执行最后一个查询的原因。

因此需要更改变量名称并执行三次,否则在query之后的条件内执行

$item = $_POST['item'];
$price = $_POST['price'];
$salePrice = $_POST['salePrice'];
$newItemUpdate = $_POST['newItemUpdate'];
if(isset($item))
{
    $query = "UPDATE Price_List Set Item = ('".$newItemUpdate."') WHERE Item = ('".$item."')";
    //query execute here
}
if(isset($salePrice))
{
    $query = "UPDATE Price_List Set SalePrice = ('".$salePrice."') WHERE Item = ('".$item."')";
   //query execute here
}
if(isset($price))
{
    $query = "UPDATE Price_List Set Price = ('".$price."') WHERE Item = ('".$item."')";
    //query execute here
}

//OR execute with different name 
//execute query1
//execute query2
//execute query3