Php mysql query result in table

Php mysql query result in table

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

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

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

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

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

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

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

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

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

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

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

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

query($sql); echo ""; while($row = $result->fetch())< echo ""; echo ""; echo ""; echo ""; echo ""; > echo "
IdNameAge
" . $row["id"] . "" . $row["name"] . "" . $row["age"] . "
"; > catch (PDOException $e) < echo "Database error: " . $e->getMessage(); > ?>

Источник

PHP MySQL Select Data

The SELECT statement is used to select data from one or more tables:

or we can use the * character to select ALL columns from a table:

To learn more about SQL, please visit our SQL tutorial.

Select Data With MySQLi

The following example selects the id, firstname and lastname columns from the MyGuests table and displays it on the page:

Example (MySQLi Object-oriented)

$servername = «localhost»;
$username = «username»;
$password = «password»;
$dbname = «myDB»;

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
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) // output data of each row
while($row = $result->fetch_assoc()) echo «id: » . $row[«id»]. » — Name: » . $row[«firstname»]. » » . $row[«lastname»]. «
«;
>
> else echo «0 results»;
>
$conn->close();
?>

Code lines to explain from the example above:

First, we set up an SQL query that selects the id, firstname and lastname columns from the MyGuests table. The next line of code runs the query and puts the resulting data into a variable called $result.

Then, the function num_rows() checks if there are more than zero rows returned.

If there are more than zero rows returned, the function fetch_assoc() puts all the results into an associative array that we can loop through. The while() loop loops through the result set and outputs the data from the id, firstname and lastname columns.

The following example shows the same as the example above, in the MySQLi procedural way:

Example (MySQLi Procedural)

$servername = «localhost»;
$username = «username»;
$password = «password»;
$dbname = «myDB»;

// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
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) // output data of each row
while($row = mysqli_fetch_assoc($result)) echo «id: » . $row[«id»]. » — Name: » . $row[«firstname»]. » » . $row[«lastname»]. «
«;
>
> else echo «0 results»;
>

You can also put the result in an HTML table:

Example (MySQLi Object-oriented)

$servername = «localhost»;
$username = «username»;
$password = «password»;
$dbname = «myDB»;

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
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) echo «

«;
// output data of each row
while($row = $result->fetch_assoc()) echo «

«;
>
echo «

ID Name
«.$row[«id»].» «.$row[«firstname»].» «.$row[«lastname»].»

«;
> else echo «0 results»;
>
$conn->close();
?>

Select Data With PDO (+ Prepared Statements)

The following example uses prepared statements.

It selects the id, firstname and lastname columns from the MyGuests table and displays it in an HTML table:

Example (PDO)

class TableRows extends RecursiveIteratorIterator <
function __construct($it) <
parent::__construct($it, self::LEAVES_ONLY);
>

function current() return «

» . parent::current(). «

«;
>

$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();

Источник

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

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

Описываем нужный 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 «Выполнено:

«;
>

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

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

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

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

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

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

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

if (!$result->num_rows) <
echo «Нет результатов:

«;
>

Описываем нужный 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_array($result, MYSQLI_ASSOC);

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

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

$row = mysqli_fetch_all($result, MYSQLI_ASSOC);

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

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

if(mysqli_query($conn, $sql)) <
echo «Выполнено»;
>else <
echo «Ошибка:

» . mysqli_error($conn);
>

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

$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, где >
// $sql = «SELECT * FROM workers WHERE >

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

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

//5. Выбрать значения всех полей из таблицы workers,
// где значение поля name = ‘Сидор’ И значение поля age > 30:
// $sql ;

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

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

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

» ;
>

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

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

» ;
>

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

Источник

Читайте также:  Java степень числа int
Оцените статью