Вывод запроса sql в html

209
26 января 2022, 08:10

Есть задача: пользователь вводит в вебстраницу номер учебной группы, идёт запрос sql, пользователю возвращается расписание на сегодня.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="Content-Type" content="text/html">
<link rel="stylesheet" type="text/css" href="style.css">
<title>Расписание</title>
</head>
<body>
<?php
require 'connect.php'; // Подключает файл с логином/паролем и именем БД
mysqli_set_charset($a,'utf8'); // Устанавливает кодировку клиента
$sql_select  = 'SELECT * FROM `pisos`'; // Выбираем таблицу из которой читать данные
$result = mysqli_query($a, $sql_select); // Запрос к БД
$row = mysqli_fetch_array($result); // Разбираем полученый массив 
do
{
  printf("<p>Номер группы: ".$row['group_number']."</p><p>Дисциплина: ".$row['task_name']."</p><p>Преподаватель: ".$row['task_family']."</p>----------------------------------------<b>");
}
while($row = mysqli_fetch_array($result));
?>
<form method="post" action="index.html">
<input id="submitback" type="submit" value="На главную">
</form>
</body>
</html>

PHP выводит две ошибки:

PHP Warning:  mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in /var/www/admin/data/www/site/allauthor.php on line 15
<p>Номер группы: </p><p>Дисциплина: </p><p>Преподаватель: </p>----------------------------------------<b>PHP Warning:  mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in /var/www/admin/data/www/site/allauthor.php on line 20

В чём причина и как это исправить?

Answer 1

Я тоже сталкивался такими проблемами) Раз вы передали перемену $a (Думаю это подключение к базе данных) на mysqli_query, передайти и на mysqli_fetch_array.

<?php
require 'connect.php'; // Подключает файл с логином/паролем и именем БД
mysqli_set_charset($a,'utf8'); // Устанавливает кодировку клиента
$sql_select  = 'SELECT * FROM `pisos`'; // Выбираем таблицу из которой читать данные
$result = mysqli_query($a, $sql_select); // Запрос к БД
$row = mysqli_fetch_array($a, $result); // Разбираем полученый массив 
do
{
  printf("<p>Номер группы: ".$row['group_number']."</p><p>Дисциплина: ".$row['task_name']."</p><p>Преподаватель: ".$row['task_family']."</p>----------------------------------------<b>");
}
while($row = mysqli_fetch_array($result));
?>

Если это не работает, то попробуйте поменять местами mysqli_query($sql_select , $a ) и тд

Answer 2

Что-то не то с $result, попробуйте вывести через просто $result и гляньте, скорее всего проблема в том, что в переменную ничего не записывается.

Answer 3

mysqli_query() возвращает mysqli_result|bool

Возвращает false в случае возникновения ошибки. В случае успешного выполнения запросов, которые создают набор результатов, таких как SELECT, SHOW, DESCRIBE или EXPLAIN, mysqli_query() вернёт объект mysqli_result. Для остальных успешных запросов mysqli_query() вернёт true.

в твоем случае это false, о чем и говорится в ошибке "...boolean given in..."

собственно, где создание коннекта к базе?

$db = new mysqli('localhost','user','pass','database');

или это в connect.php? Тогда не мешало бы там же сделать проверку на ошибки.

курим тут

READ ALSO
Срабатывание BEFORE INSERT триггера при запросе INSERT...SELECT

Срабатывание BEFORE INSERT триггера при запросе INSERT...SELECT

Есть триггер для проверки уникальности вставляемого поля login в таблицу Client

160
Написать запрос к СУБД MySQL

Написать запрос к СУБД MySQL

Доброго времени суток уважаемые форумчане! В программировании MySQL совсем новичокНужно написать SQL-запрос к СУБД MySQL, который выбрал из базы...

132
Как из таблицы БД извлечь последнюю добавленную запись?

Как из таблицы БД извлечь последнюю добавленную запись?

Можно ли это сделать с помощью LIMIT? Или можно ли извлечь запись у которой самый большой id, так как у каждой строки он автоинкемируемый, а значит...

110
Как лучше хранить данные

Как лучше хранить данные

Приветствую всех и поздравляю с наступающим Новым годом)

151