学习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.");
}
}
当&#34;所有级别&#34;从下拉列表中选择,代码按预期运行。当选择任何其他选项时,我的confirm_quaery函数指出查询失败。
我不确定为什么变量的值没有切换。
答案 0 :(得分:2)
详细说明我的评论:
将LIKE %elementary%
更改为=&gt; LIKE '%elementary%'
并为其他人做同样的事情。
您需要将模式匹配包装在引号中,并按照手册:
的MySQL&GT;选择&#39;大卫!&#39;喜欢&#39;%D%v%&#39 ;;
MySQL的&GT;选择10喜欢&#39; 1%&#39;;
您还没有检查数据库错误。
将or die(mysqli_error($connection))
添加到mysqli_query()
如果仍然不起作用,那么它也是一个范围问题 将连接传递给您的函数,不使其成为全局。