php:根据下拉列表更改变量值

时间:2014-10-16 14:26:44

标签: php mysql variables switch-statement

学习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函数指出查询失败。

我不确定为什么变量的值没有切换。

1 个答案:

答案 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()

如果仍然不起作用,那么它也是一个范围问题 将连接传递给您的函数,使其成为全局。