elseif无法在PHP中正常工作

时间:2018-08-11 06:12:21

标签: php mysql if-statement

<?php

$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "test_db";


// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}

//check radio button and update sql accordingly

if (isset($_GET['calc'])) {

$calc = $_GET['calc'];
}

if ($calc='average'){
$sql1 = "UPDATE `config` SET `calc_category`=1 WHERE 1";
$conn->query($sql1);
} elseif ($calc='high'){
$sql1 = "UPDATE `config` SET `calc_category`=2 WHERE 1";
$conn->query($sql1);
} else {
$sql1 = "UPDATE `config` SET `calc_category`=3 WHERE 1";
$conn->query($sql1);
}


?>

在上面的代码中,即使$ calc等于'high'或除'average'以外的其他值,它仍然使用'calc_category'= 1更新数据库,仅当第一个'if'条件为是的。

我已经回显了$ calc的值,它会根据选择的单选按钮而变化,但是我不确定为什么总是总是先执行'if'条件代码。

我是PHP,SQL的新手,请帮助我哪里出错了。

3 个答案:

答案 0 :(得分:2)

等于需要的两倍...

 if ($calc=='average'){ /****// == instead of = //*****/
     $sql1 = "UPDATE `config` SET `calc_category`=1 WHERE 1";
     $conn->query($sql1);
 } elseif ($calc=='high'){ /****// == instead of = //***/
     $sql1 = "UPDATE `config` SET `calc_category`=2 WHERE 1";
     $conn->query($sql1);
 } else {
     $sql1 = "UPDATE `config` SET `calc_category`=3 WHERE 1";
     $conn->query($sql1);
 }

还要在Where子句附近检查您的查询。...这是1 ?????

答案 1 :(得分:1)

在elseif语句中,您正在设置$calc = 'high'。那不是比较。为了让您评估条款是否相等,您需要根据比较的严格程度使用=====

if ($calc == 'average'){
$sql1 = "UPDATE `config` SET `calc_category`=1 WHERE 1";
$conn->query($sql1);
} elseif ($calc == 'high'){
$sql1 = "UPDATE `config` SET `calc_category`=2 WHERE 1";
$conn->query($sql1);
} else {
$sql1 = "UPDATE `config` SET `calc_category`=3 WHERE 1";
$conn->query($sql1);
}

答案 2 :(得分:0)

对于比较两个值,必须使用“ ==”而不是“ =”。 将值附加到变量返回真值,因此elseif节不起作用。 我希望它会有用。

错误用法:如果($ calc ='average') 真正的用法:if($ calc =='average')