PHP MySQL Database

Вибір даних з Бази даних, застосування PHP та MySQL

Матеріал представлений на сторінці є моїм перекладом ресурсу w3schools.com/php/php_ref_mysqli.asp

PHP MySQL Database

SQL-запит SELECT застосовується для вибірки даних з однієї чи більше таблиць.

SELECT column_name(s) FROM table_name

Якщо застосовувати символ "*", то будуть вибрані всі записи з таблиць

SELECT * FROM table_name

Більше дізнатись про SQL-запити можна переглянувши сторінку елементи SQL .

Вибір даних застосовуючи MySQLi

Слідуючий приклад вибирає дані колонок id, firstname та lastname з таблиці "MyGuests" та відображує їх на сторінці.

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

// Створюємо з'єднання
$conn = new mysqli($servername, $username, $password, $dbname);

// Перевіряємо з'єднання
if ($conn->connect_error) {
die("Помилка з'єднання: " . $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"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. " ";
    }
} else {
echo "0 results";
}

$conn->close();
?>
Переглянути приклад

Декілька пояснень щодо вищеподаного кодування.
Спочатку, ми встановлюємо SQL-запит на вибірку даних колонок id, firstname та lastname з таблиці MyGuests.
Слідуючий рядок коду виконує запит та зберігає дані в змінній $result.
Потім функція num_rows() перевіряє наявність рядків більше нуля.
Якщо рядків більше ніж нуль, функція fetch_assoc() зберігає результуючу вибірку даних в асоціативний масив, який ми можемо відтворити за дапомогою циклу.
Цикл while() по черзі виводить результуючу вибірку даних id, firstname та lastname.
    Слідуючий приклад відтворює ту саму вибірку даних застосовуючи процедурний стиль виконання програмування.

MySQLi процедурний стиль кодування

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

// Створюємо з'єднання
$conn = mysqli_connect($servername, $username, $password, $dbname);

// Перевіряємо з'єднання
if (!$conn) {
die("Помилка з'єднання: " . mysqli_connect_error());
}

$sql = "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"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. " ";
}
} else {
echo "0 results";
}
mysqli_close($conn);
?>
Переглянути приклад


Можна вложити результуючу вибірку даних в таблицю. (Обєктно-орієнтоване програмування)

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

// Створюємо з'єднання
$conn = new mysqli($servername, $username, $password, $dbname);

// Перевіряємо з'єднання
if ($conn->connect_error) {
die("Помилка з'єднання: " . $conn->connect_error);
}

$sql = "SELECT id, firstname, lastname FROM MyGuests";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
echo "<table><tr><th>ID</th><th>Name</th></tr>";
// виводимо дані кожного рядка таблиці
while($row = $result->fetch_assoc()) {
echo "<tr><td>".$row["id"]."</td><td>".$row["firstname"]." ".$row["lastname"]."</td></tr>";
    }
echo "</table>";
} else {
echo "0 results";
}

$conn->close();
?>
Переглянути приклад

MySQLi процедурний стиль кодування

<?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>";
?>
Переглянути приклад