PHP MySQL Чтение данных

Чтение данных из базы данных MySQL

Инструкция SELECT используется для чтения данных из таблицы:

SELECT column_name(s) FROM table_name

Мы можем использовать знак * для чтения всех полей в таблице:

SELECT * FROM table_name

Чтобы узнать больше о SQL, посетите нашУчебник по SQL。


Использование MySQLi

В следующем примере мы читаем столбцы id, firstname и lastname из таблицы MyGuests в базе данных myDB и отображаем их на странице:

Пример (MySQLi - объектно-ориентированный)

<?php $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "myDB"; //Создать подключение $conn = new mysqli($servername, $username, $password, $dbname); // Проверить подключение if ($conn->connect_error) { die("Ilauttit:" . $conn->connect_error); } $sql = "SELECT id, firstname, lastname FROM MyGuests"; $result = $conn->query($sql); if ($result->num_rows > 0) { //Вывод данных while($row = $result->fetch_assoc()) { echo "id: " . $row["id"]. " - Имя: " . $row["firstname"]. " " . $row["lastname"]. "<br>"; } } else { echo "0 результатов"; } $conn->close(); ?>

Анализ приведённого выше кода выглядит следующим образом:

Сначала мы задаём SQL-запрос для чтения трёх полей id, firstname и lastname из таблицы MyGuests. Затем мы используем этот SQL-запрос, чтобы получить набор результатов из базы данных и присвоить его переменной $result.

Функция num_rows() проверяет возвращённые данные.

Если возвращается несколько строк, функция fetch_assoc() помещает набор результатов в ассоциативный массив и выводит его в цикле. Цикл while() перебирает набор результатов и выводит значения трёх полей id, firstname и lastname.

В следующем примере используется процедурный подход MySQLi, сходный по действию с приведённым выше кодом:

Пример (MySQLi - процедурный)

<?php $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "myDB"; //Создать подключение $conn = mysqli_connect($servername, $username, $password, $dbname); // Проверка подключения if (!$conn) { die("Ilauttit naammangittuq:" . mysqli_connect_error()); } $ = "SELECT id, firstname, lastname FROM MyGuests"; $result = mysqli_query($conn, $sql); if (mysqli_num_rows($result) > 0) { //Вывод данных while($row = mysqli_fetch_assoc($result)) { echo "id: " . $row["id"]. " - Имя: " . $row["firstname"]. " " . $row["lastname"]. "<br>"; } } else { echo "0 результатов"; } mysqli_close($conn); ?>


Использование PDO (+ подготовленные запросы)

В следующем примере используются подготовленные запросы.

Он выбирает поля id, firstname и lastname из таблицы MyGuests и помещает их в HTML-таблицу:

Пример (PDO)

<?php echo "<table style='border: solid 1px black;'>"; echo "<tr><th>Id</th><th>Firstname</th><th>Lastname</th></tr>"; class TableRows extends RecursiveIteratorIterator { function __construct($it) { parent::__construct($it, self::LEAVES_ONLY); } function current() { return "<td style='width:150px;border:1px solid black;'>" . parent::current(). "</td>"; } function beginChildren() { echo "<tr>"; } function endChildren() { echo "</tr>" . "\n"; } } $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "myDBPDO"; try { $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $stmt = $conn->prepare("SELECT id, firstname, lastname FROM MyGuests"); $stmt->execute(); //Установите результирующий набор как ассоциативный массив $result = $stmt->setFetchMode(PDO::FETCH_ASSOC); foreach(new TableRows(new RecursiveArrayIterator($stmt->fetchAll())) as $k=>$v) { echo $v; } } catch(PDOException $e) { echo "Ошибка: " . $e->getMessage(); } $conn = null; echo "</table>"; ?>

Другие расширения