我正在创建一个查询mysql的简单表。我有调整查询的文本字段。例如,如果我在{,1}中放入item ID
,然后按提交,它将只选择ID
,但如果我在空白文本字段上点击提交,那么它应该为我提供所有数据。< / p>
这在我的第一个案例中运作良好,但是我无法解决第二个问题。如果我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());
}
答案 0 :(得分:0)
因此,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;
。
答案 1 :(得分:0)
这是开关的错误用法。 Switch接受一个变量,然后比较它可能的每种情况。一个例子是
switch ($variable) {
case "hello":
//do something
break;
case "world":
break;
换句话说,案例是变量将等于的内容,以触发其中的内容。你只是问$ _POST是否存在,它总是这样,所以switch($ _POST)总是等于true。第一种情况总是等于真,所以......这就是解雇的问题。你想使用if(isset($ _ POST ['something'])){} else {}