0

Есть задача: пользователь вводит в вебстраницу номер учебной группы, идёт запрос 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

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

3 Answers3

0

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

0

Я тоже сталкивался такими проблемами) Раз вы передали перемену $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 ) и тд

0

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? Тогда не мешало бы там же сделать проверку на ошибки.

курим тут