Я просто работаю над некоторыми учебниками в книге, и я пытаюсь установить на странице страницу «Фильтр». Поэтому, когда загружается страница, он должен отображать все значения, но если что-либо выбрано из опции фильтра раскрывающегося списка, список должен измениться на странице. Вот мой код:
<?php require_once 'login.php'; $conn = new mysqli ($host, $user, $password, $database) or die("Connection Failed"); $col = 'Blue'; $sql = 'SELECT * FROM users ORDER BY user_creation_date desc'; $result = $conn->query($sql) or die(mysqli_error()); $columns = array('Blue', 'Pink', 'Yellow'); if (isset($_GET['column']) && in_array($_GET['column'], $columns)) { $col = $_GET['column']; // prepare the SQL query $sql = "SELECT * FROM users WHERE user_pref = $col"; // submit the query and capture the result $result = $conn->query($sql) or die(mysqli_error()); } ?> <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>Filter by User Pref</title> </head> <body> <form id="form1" method="get" action=""> <label for="column">Order by:</label> <select name="column" id="column"> <option <?php if ($col == 'Blue') echo 'selected'; ?>>Blue</option> <option <?php if ($col == 'Pink') echo 'selected'; ?>>Pink</option> <option <?php if ($col == 'Yellow') echo 'selected'; ?>>Yellow</option> </select> <input type="submit" name="change" id="change" value="Change"> </form> <table> <tr> <th scope="col">User name</th> <th scope="col">User pref</th> <th> </th> <th> </th> </tr> <?php while($row = $result ->fetch_assoc()) { ?> <tr> <td><?php echo $row['user_name']; ?></td> <td><?php echo $row['user_pref']; ?></td> </tr> <?php } ?> </table> </body> </html>
Ошибка, которую я получаю
Предупреждение: mysqli_error () ожидает ровно 1 параметр, 0 указан в строке 23. Это строка 23: $ result = $ conn-> query ($ sql) или die (mysqli_error ());
заранее спасибо
Как вы можете видеть в руководстве http://php.net/manual/en/mysqli.error.php , вам необходимо передать соединение с mysqli_error (), так что строка должна быть
$conn->query($sql) or die(mysqli_error($conn));
Вы смешиваете ООП и функциональный синтаксис.
mysqli_error();
должно быть:
$conn->error;