我正在学习PHP,但遇到了一个问题。我知道PHP只有在函数中才有作用域,所以我不确定为什么我的switch语句不能改变变量的值。
目标:根据用户下拉菜单的选择更改mysql SELECT语句。
表单:
<form action="contacts_show.php" method="POST">
<select name="grade" id="grade">
<option value="all">All Levels</option>
<option value="elementary">Elementary</option>
<option value="middle">Middle</option>
<option value="senior">Senior</option>
<input type="submit" name="browse" id="browse" value="Browse" />
</form>
PHP(编辑以缩短代码):
$levelSelected = $_POST['grade'];
if ($levelSelected == "all") {
$querySelect = "SELECT * FROM teachers ORDER BY school ASC";
} else {
$querySelect = "SELECT * FROM teachers WHERE school LIKE %$levelSelected% ORDER BY school ASC";
}
$query = $querySelect;
$result = mysqli_query($connection, $query);
confirm_query($result);
如有必要,请使用 confirm_query 函数:
function confirm_query($result_set) {
if (!$result_set) {
die("Database query failed.");
}
}
当从下拉列表中选择“所有级别”时,代码按预期运行。当选择任何其他选项时,我的confirm_query函数会表明查询失败。
我不确定为什么变量的值没有切换。
LIKE %elementary%
=>LIKE '%elementary%'
,对其他的也做同样的修改。你没有检查数据库错误。如果还是无法运行,则可能是作用域问题。 - Funk Forty Ninermysqli_error
函数来获取 mysqli 的精确错误信息,或者你也可以让 mysqli 抛出异常。 - jeroen