Оператор SELECT используется для выбора данных из одной или нескольких таблиц:
SELECT column_name(s) FROM table_name;Или мы можем использовать символ *, чтобы выбрать ВСЕ столбцы из таблицы:
SELECT * FROM table_name;Следующий пример выбирает столбцы 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("Connection failed: {$conn -> connect_error}");
}
$sql = 'SELECT id, firstname, lastname FROM MyGuests;';
$result = $conn -> query($sql);
if ($result -> num_rows > 0) {
// Выходные данные каждого ряда
while($row = $result -> fetch_assoc()) {
print("id: {$row['id']} - Name: {$row['firstname']} {$row['lastname']}<br>");
}
} else {
print('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('Connection failed: ' . 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)) {
print("id: {$row['id']} - Name: {$row['firstname']} {$row['lastname']}<br>");
}
} else {
print('0 results');
}
mysqli_close($conn);Вы также можете поместить результат в таблицу HTML:
<?php
$servername = 'localhost';
$username = 'username';
$password = 'password';
$dbname = 'myDB';
// Создание подключения
$conn = new mysqli($servername, $username, $password, $dbname);
// Проверка подключения
if ($conn -> connect_error) {
die("Connection failed: {$conn -> connect_error}");
}
$sql = 'SELECT id, firstname, lastname FROM MyGuests';
$result = $conn -> query($sql);
if ($result -> num_rows > 0) {
print('<table><tr><th>ID</th><th>Name</th></tr>');
// Выходные данные каждого ряда
while($row = $result -> fetch_assoc()) {
print("<tr><td>{$row['id']}</td><td>{$row['firstname']} {$row['lastname']}</td></tr>");
}
print('</table>');
} else {
print('0 results');
}
$conn -> close();В следующем примере используются подготовленные операторы. Он выбирает столбцы id, firstname и lastname из таблицы MyGuests и отображает их в таблице HTML:
<?php
print('<table style="border: solid 1px black;">');
print('<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() {
print('<tr>');
}
function endChildren() {
print('</tr>\n');
}
}
$servername = 'localhost';
$username = 'username';
$password = 'password';
$dbname = 'myDB';
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) {
print($v);
}
} catch(PDOException $e) {
print("Error: {$e -> getMessage()}");
}
$conn = null;
print('</table>');