Изучение PHP и возникновение проблемы, которую я не могу понять. Я читал, что PHP имеет область видимости только для функций, поэтому я не уверен, почему мой оператор switch не меняет значение переменных.
Цель: изменить оператор SELECT mysql на основе выбранного пользователем раскрывающегося списка.
Форма:
<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);
функция verify_query, если необходимо:
function confirm_query($result_set) {
if (!$result_set) {
die("Database query failed.");
}
}
Если в раскрывающемся списке выбран «Все уровни», код запускается, как и ожидалось. Когда выбрана любая другая опция, моя функция verify_quaery утверждает, что запрос не выполнен.
Я не уверен, почему значения переменной не переключаются.
Чтобы уточнить мой комментарий:
+ Изменить LIKE %elementary%
к => LIKE '%elementary%'
и сделать то же самое для других.
Вам нужно обернуть соответствие шаблона в кавычки, а также в соответствии с руководством:
mysql> ВЫБЕРИТЕ «Дэвид!» Как «% D% v%»;
mysql> SELECT 10 LIKE ‘1%’;
Вы также не проверяете ошибки БД.
добавлять or die(mysqli_error($connection))
в mysqli_query()
Если это все еще не работает, то это также проблема сферы действия.
Передайте соединение к вашей функции, сделайте не сделать это глобальным.
Других решений пока нет …