Специально для всех жертв видеокурсов по похапе.
Мастеркласс по решению супер-сложной задачи по извлечению информации из базы данных.
1. Вместо идиотской mysqli используем нормальный PDO. Берем отсюда
код соединения с БД и записываем его в файл db.php
2. Убеждаемся, что можем видеть все ошибки, которые возникают в коде
3. Собственно ответ на вопрос "как подставлять словие в запрос" заключается в 3 строчках
$sql = "SELECT id, city_name FROM city where id = ?";
$stmt = $pdo->prepare($sql);
$stmt->execute([$_GET['sch']]);
4. Переписываем наш многострадальный код
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
include 'db.php';
$data = $pdo->query("SELECT id FROM city LIMIT 10")->fetchAll();
?>
<form>
<div class="form-group">
<label for="search_word">Поиск</label>
<select class="form-control" name="sch">
<?php foreach ($data as $row): ?>
<option><?=$row['id']?></option>
<?php endforeach ?>
</select>
</div>
<input type="submit" class="btn btn-default">Поиск</button>
</form>
<?php
if (!isset($_GET['sch'])) {
die("Выберите значение");
}
$sql = "SELECT id, city_name FROM city where id = ?";
$stmt = $pdo->prepare($sql);
$stmt->execute([$_GET['sch']]);
$data = $stmt->fetchAll();
?>
<?php if ($data) : ?>
<table class="table table-striped"><tr><th>ID</th><th>Город</th></tr>
<?php foreach ($data as $row): ?>
<tr><td><?=$row["id"]?></td><td><?=$row["city_name"]?></td></tr>
<?php endforeach ?>
</table>
<?php else : ?>
echo "0 results";
<?php endif ?>
Возникающие на экране сообщения об ошибках пытаемся перевести и нагуглить самостоятельно. Только в самых беднадежных случаях идем на тостер и просим растолковать