我正在创建一个查询MySQL的简单表。我有调整查询的文本字段。例如,如果我在其中放入一个item ID,然后按Submit,它将只选择该ID,但是如果我在空白文本字段上单击Submit,则它应该给我所有数据。

这在我的第一种情况下可以正常工作,但是我无法解决第二种情况。如果我switch放置在箱子上,那么第一名的新箱子现在将被触发,而第二名的则不会。我不确定我在做什么错。

switch (isset($_POST)) {

case (isset($_POST['ProdNo'])):  // should only fire if the ProdNo field is filled and submit is hit
      if (empty($_POST['ProdNo'])) { break; }  // should return us to a full listing
      $i=$_POST['ProdNo'];
      $sql = "SELECT * from fg_inventory WHERE ProdNo LIKE '$i%'";
      $result = $conn->query($sql) or die(mysqli_error());
break;


case (isset($_POST['fg_inventory_id2'])):   // should only fire if the fg_inventory field is filled and submit is hit
      if (empty($_POST['fg_inventory_id2'])) { break; }  // should return us to a full listing
      $i=$_POST['fg_inventory_id2'];
      $sql = "SELECT * from fg_inventory WHERE fg_inventory_id2=$i";
      $result = $conn->query($sql) or die(mysqli_error());
break;

default:

$sql = "SELECT * from fg_inventory";
    $result = $conn->query($sql) or die(mysqli_error());
    }

最佳答案

因此,switch语句可能无法按您认为的那样工作。

switch($var)$var与各种case块进行比较。例如,

$var = 1;
switch($var) {
    case (1): // Is $var equal to 1?
        echo("ONE");
        break;
    case (2): // Is $var equal to 2?
        echo("TWO");
        break;
}


这种情况将输出ONE

由于您将switchisset一起使用,因此总是要传递truefalse。您随后的case检查还将检查truefalse。因此,最后您要对照trues检查falses。在这种情况下,您可能应该只使用嵌套的if语句。 :-)

这是PHP的switch reference page

另请注意,如果您希望将一种情况归结为另一种情况,则只需省略break;

10-05 23:11