我正在创建一个查询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
。由于您将
switch
与isset
一起使用,因此总是要传递true
或false
。您随后的case
检查还将检查true
或false
。因此,最后您要对照trues
检查falses
。在这种情况下,您可能应该只使用嵌套的if
语句。 :-)这是PHP的switch reference page。
另请注意,如果您希望将一种情况归结为另一种情况,则只需省略
break;
。