<?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的新手,请帮助我哪里出错了。
答案 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')