Обработка результатов запросов и вывод полученых данных

Обработка результатов запросов




Выполнение запросов, обработка результатов и получение данных



Стиль ООП



Описываем нужный SQL-запрос и помещаем его в переменной $sql.

Затем выполняем запрос к базе данных с помощью метода query объекта mysqli.

Если ошибок нет — получим объект mysqli_result, который сохраняется в переменной $result.

Если же в SQL-запросе присутствуют ошибки — метод query вернет FALSE,

тогда с помощью оператора throw генерируем исключение, которое обрабатываем с помощью Exception.


// устанавливаем соединение с базой данных newDB (создаем экземпляр класса new mysqli())
$conn = new mysqli($servername, $username, $password, $dbname);

// SQL-запрос
$sql = "SELECT * FROM users ";

// запрос к базе данных
$result = $conn->query($sql);

if ($result === FALSE) {
throw new \Exception('Ошибка в SQL-запросе!');
}else{
echo "Выполнено: <br><br>";
}



Получение данных


Получение данных одной строки в виде ассоциативного массива:


$entry = $result->fetch_assoc();



Получение данных одной строки в виде индексированного массива:


$entry = $result -> fetch_row();



Получение данных одной строки в виде объекта:


$entry = $result->fetch_object();



Получение всех строк:


$entries = array();
while ($entry = $result->fetch_object()) {
$entries[] = $entry;
}



Получение всех строк в виде ассоциативного массива:


$entries = $result->fetch_all(MYSQLI_ASSOC);




Если результат не содержит количество результатов выборки - num_rows, выведем: "Нет результатов".

Выражение $result->$num_rows - получает число рядов в результирующей выборке


if (!$result->num_rows) {
echo "Нет результатов: <br><br>";
}



Процедурный стиль



Описываем нужный SQL-запрос и помещаем его в переменной $sql.

Затем выполняем запрос к базе данных с помощью функции mysqli_query($conn, $sql) и помещаем результат в переменную $result


// устанавливаем соединение с базой данных newDB
$conn = mysqli_connect($servername, $username, $password, $dbname);

// SQL-запрос
$sql = "SELECT * FROM users";

// запрос к базе данных
$result = mysqli_query($conn, $sql);



Получение данных


Эта функция возвращает одну запись выборки в виде индексированного массива:


$row = mysqli_fetch_row($result);



Эта функция возвращает одну запись выборки в виде ассоциативного массива:


$row = mysqli_fetch_assoc($result);



Эта функция в зависимости от параметров может вернуть либо индексированный массив,

либо ассоциативный массив, либо массив, содержащий и индексы и строковые ключи:


$row = mysqli_fetch_array($result, MYSQLI_ASSOC);



Получение всего результата.

Эта функция возвращает двухмерный массив, содержащий все записи:


$row = mysqli_fetch_all($result, MYSQLI_ASSOC);



Если запрос к базе данных - выполнен, тогда выведем сообщение "Выполнено".

В противном случае выведем сообщение "Ошибка" и выведем информацию об ошибке mysqli_error($conn):


if(mysqli_query($conn, $sql)) {
echo "Выполнено";
}else{
echo "Ошибка: <br><br>" . mysqli_error($conn);
}




Пример



Выбираем данные из таблицы workers (Стиль ООП).


файл index.php


-- файл index.php --

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "newDB";

// Устанавливаем соединение с сервером MySQL:
$conn = new mysqli ($servername, $username, $password, $dbname);

// Проверка соединения:
if ($conn -> connect_error){
die ("Не удалось подключиться: " . $conn -> connect_error);
}
echo "Соединение успешно установлено";

// ЗАПРОСЫ

//1. Выбрать значения всех полей из таблицы workers:
// $sql = "SELECT * FROM workers ";

//2. Выбрать значения всех полей из таблицы workers, где id = 2:
// $sql = "SELECT * FROM workers WHERE id = 2";

//3. Выбрать значение поля id из таблицы workers, где значение поля name = 'Иван':
// $sql = "SELECT id FROM workers WHERE name = 'Иван'";

//4. Выбрать значение поля name из таблицы workers, где id > 5:
// $sql = "SELECT name FROM workers WHERE id > 5";

//5. Выбрать значения всех полей из таблицы workers,
// где значение поля name = 'Сидор' И значение поля age > 30:
// $sql = "SELECT id, name, surname, age FROM workers WHERE name = 'Сидор' AND age > 30";

//6. Иногда нужно указать много значений:
$sql ="SELECT name FROM workers WHERE id=2 AND id=5 AND id=10";

// Выполнение запроса
$result = $conn->query($sql);

// Проверка выполнения запросов
if ($result === FALSE) {
throw new \Exception('Ошибка в SQL-запросе!');
}else{
echo "Выполнено: <br><br>";
}

// Вывод полученых данных

// получить все строки в виде ассоциативного массива
$entries = $result -> fetch_all(MYSQLI_ASSOC);

print_r($entries);

// num_rows содержит количество результатов выборки
if (!$result -> num_rows) {
echo "Нет результатов: <br><br>";
}

// закрываем соединение
$conn->close();
?>


Наверх






Наверх Наверх