Полный цикл в digital

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

На уровне кода SQL получение данных осуществляется с помощью команды SELECT. Например, получение всех данных из таблицы Users:

SELECT * FROM Users

В библиотеке pdo для получения данных у объекта PDO вызывается метод query(), в который передается команда SQL. Метод query() возвращает объект PDOStatement, который представляет набор всех полученных из базы данных строк:

$sql = "SELECT * FROM Users";
$result = $conn->query($sql);

Получив объект PDOStatement, мы можем извлечь данные. В частности, его метод fetch() при первом обращении первую строку (если в наборе есть строки):

$row = $result->fetch();

При последующих обращениях метод fetch() возвращает следующие строки, пока в наборе не останется строк. Если строк в наборе больше нет, то метод возвращает false. Поэтому для получения всех строк удобно использовать циклы. Например, цикл while:

while($row = $result->fetch()){
// обработка строк
}

Таким образом, при каждой итерации цикл while будет получать новую строку из набора в переменную $row, пока метод $result->fetch() не возвратит false - после чего произойдет выход из цикла.

Строка возвращается в виде ассоциативного массива, где отдельные значения - это столбцы строки, а ключи этих значений - названия столбцов таблицы. Например, получение значения столбца name в переменную:

while($row = $result->fetch()){
$username = $row["name"];
// операции с $username
}

Вместо цикла while можно использовать цикл for/foreach:

foreach($result as $row) {
$username = $row["name"];
// операции с $username
}

Здесь явным образом не вызывается метод $result->fetch(). Формально мы просто перебираем переменную $result как обычный массив, также помещая каждую строку в переменную $row.

Теперь все объединим и получим данные из таблицы Users из прошлых тем, которая имеет следующее определение:

CREATE TABLE Users (id INTEGER AUTO_INCREMENT PRIMARY KEY, name VARCHAR(30), age INTEGER)

Для этого определим следующий простенький скрипт:

<?php
try {
$conn = new PDO("mysql:host=localhost;dbname=testdb1", "root", "mypassword");
$sql = "SELECT * FROM Users";
$result = $conn->query($sql);
echo "<table><tr><th>Id</th><th>Name</th><th>Age</th></tr>";
while($row = $result->fetch()){
echo "<tr>";
echo "<td>" . $row["id"] . "</td>";
echo "<td>" . $row["name"] . "</td>";
echo "<td>" . $row["age"] . "</td>";
echo "</tr>";
}
echo "</table>";
}
catch (PDOException $e) {
echo "Database error: " . $e->getMessage();
}
?>

В данном случае полученные данные будут выводиться в таблицу, создаваемую элементом <table>:

Заполните форму уже сегодня!
Для начала сотрудничества необходимо заполнить заявку или заказать обратный звонок. В ответ получите коммерческое предложение, которое будет содержать индивидуальную стратегию с учетом требований и поставленных задач
Работаем по будням с 9:00 до 18:00. Заявки, отправленные в выходные, обрабатываем в первый рабочий день до 12:00.
Спасибо, ваш запрос принят и будет обработан!
Эйч Маркетинг