Php sql select object

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:

Читайте также:  Java sdk win 10

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-запросов типа SELECT (запрос, который должен вернуть результат) средствами с расширением PDO мы должны воспользоваться методом объекта PDO — query() , в качестве первого параметра передаем sql-запрос.

При этом возвращается специальный объект результата выполненного запроса (Statement), который мы можем использовать для получения готового результата.

// Подключение к базе данных
try <
$pdo = new PDO ( ‘mysql:host=localhost;dbname=test2’;charset=utf-8 , ‘root’ , » );
$pdo -> setAttribute ( PDO :: ATTR_ERRMODE , PDO :: ERRMODE_EXCEPTION );
echo «Успешное подключение

» ;
> catch exit ( ‘Ошибка подключения:
. $e -> getMessage ());
>

> catch exit ( ‘Ошибка в запросе:

. $e -> getMessage ());
>
?>

Выведет:
PDOStatement Object ( [queryString] => SELECT id, title FROM news )

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

(проходимся по объекту $result , как будто это обычный массив)

foreach ( $result as $row ) echo «

» . $row [ ‘id’ ] . » | » . $row [ ‘title’ ];
>

// Подключение к базе данных
try <
$pdo = new PDO ( ‘mysql:host=localhost;dbname=test2’;charset=utf-8 , ‘root’ , » );
$pdo -> setAttribute ( PDO :: ATTR_ERRMODE , PDO :: ERRMODE_EXCEPTION );
echo «Успешное подключение

» ;
> catch exit ( ‘Ошибка подключения:
. $e -> getMessage ());
>

> catch exit ( ‘Ошибка в запросе:

. $e -> getMessage ());
>
?>

Выведет:
1 | Новость 1
2 | Новость 2
3 | Новость 3
4 | Новость 4
5 | Новость 5

Метод fetch()

Использование цикла while

Для выборки данных и получения готового результата можно использовать метод fetch() объекта PDOStatement

Метод fetch() извлекает следующую строку из результирующего набора .

В качестве параметра мы передаем одну из констант (стиль работы данного метода):

PDO::FETCH_ASSOC — метод fetch() в качестве результата своей работы будет возвращать ассоциативный массив.

while ( $row = $result -> fetch ( PDO :: FETCH_ASSOC )) echo «

» . $row [ ‘id’ ] . » | » . $row [ ‘title’ ];
>

PDO::FETCH_NUM — возвращает данные в виде простого индексного массива. В этом случае необходимо обращаться к ячейкам по их индексам:

while ( $row = $result -> fetch ( PDO :: PDO::FETCH_NUM )) echo «

» . $row [ 0 ] . » | » . $row [ 1 ];
>

PDO::FETCH_BOTH (по умолчанию) — возвращает данные в виде и ассоциативного массив и простого индексного массива. Обращаться можно как по именам ячеек, так и по их индексам.

PDO::FETCH_OBJ — возвращает данные в виде объекта. В этом случае в переменной $row мы получим объект и обращаться будем к его свойствам :

while ( $row = $result -> fetch ( PDO :: PDO::FETCH_NUM )) // Здесь обращаемся к свойствам объекта $row
echo «

» . $row -> id . » | » . $row -> title ;
>

// Подключение к базе данных
try <
$pdo = new PDO ( ‘mysql:host=localhost;dbname=test2’;charset=utf-8 , ‘root’ , » );
$pdo -> setAttribute ( PDO :: ATTR_ERRMODE , PDO :: ERRMODE_EXCEPTION );
echo «Успешное подключение

» ;
> catch exit ( ‘Ошибка подключения:
. $e -> getMessage ());
>

// Использование цикла while и константы FETCH_ASSOC:
while ( $row = $result -> fetch ( PDO :: FETCH_ASSOC )) echo «

» . $row [ ‘id’ ] . » | » . $row [ ‘title’ ];
>
———————————————————————

> catch exit ( ‘Ошибка в запросе:

. $e -> getMessage ());
>
?>

Выведет:
1 | Новость 1
2 | Новость 2
3 | Новость 3
4 | Новость 4
5 | Новость 5

— получаем такой же результат, как и при использовании цикла foreach

PDO::FETCH_CLASS — при использовании этой константы метод fetch() будет передавать данные непосредственно в специальный класс, имя которого мы должны задать в специальной настройке.

Соответственно, в переменную $row попадет уже объект этого класса. При этом в этот объект уже будут переданы данные в соответствующие свойства.

Перед вызовом метода fetch() мы должны обратиться к объекту класса PDOStatement и вызвать на исполнение метод setFetchMode .

Метод setFetchMode устанавливает режим работы метода fetch() .

Первым параметром он принимает константу PDO::FETCH_CLASS , вторым — имя класса , в который будут переданы параметры и объект которого будут возвращен в качестве результата работы данного метода.

$result -> setFetchMode ( PDO :: PDO::FETCH_CLASS , ‘News’ );
while ( $row = $result -> fetch ()) // Здесь обращаемся к методам класса News (news.php)
echo «

» . $row -> getId () . » | » . $row -> getTitle ();
>

Создадим этот класс в котором будут два свойства (их имена совпадают с именами выбранных полей) и два метода.

class News
<
protected $id ;
protected $title ;

// Метод будет возвращать значение свойства $id
public function getId () //. здесь мы можем производить какие-то манипуляции с данными свойствами .
return $this -> id ;
>

// Метод будет возвращать значение свойства $title
public function getTitle () //. здесь мы можем производить какие-то манипуляции с данными свойствами .
return $this -> title ;
>
>
?>

В индексном файле подключаем класс news.php

include ‘news.php’ ; // подключаем класс news.php

// Подключение к базе данных
try <
$pdo = new PDO ( ‘mysql:host=localhost;dbname=test2’;charset=utf-8 , ‘root’ , » );
$pdo -> setAttribute ( PDO :: ATTR_ERRMODE , PDO :: ERRMODE_EXCEPTION );
echo «Успешное подключение

» ;
> catch exit ( ‘Ошибка подключения:
. $e -> getMessage ());
>

// Использование константы PDO::FETCH_CLASS и метода setFetchMode
$result -> setFetchMode ( PDO :: PDO::FETCH_CLASS , ‘News’);
while ( $row = $result -> fetch ()) // Здесь обращаемся к методам класса News (news.php)
echo «

» . $row -> getId () . » | » . $row -> getTitle ();
>
———————————————————————

> catch exit ( ‘Ошибка в запросе:

. $e -> getMessage ());
>
?>

Выведет:
1 | Новость 1
2 | Новость 2
3 | Новость 3
4 | Новость 4
5 | Новость 5

— во всех случаях получаем один и тот же же результат.

Метод fetchAll()

Метод fetchAll() — возвращает массив, содержащий все строки результирующего набора

Этот метод удобен тем, что один раз его вызвав, мы сразу получаем массив выбранных данных.

Метод fetchAll() и константа PDO::FETCH_ASSOC

$result -> setFetchMode ( PDO :: FETCH_ASSOC );
print_r ( $result -> fetchAll ());

Получаем многомерный массив:
Array
(
[0] => Array
(
[id] => 1
[title] => Новость 1
)
[1] => Array
(
[id] => 2
[title] => Новость 2
)
[2] => Array
(
[id] => 3
[title] => Новость 3
)
[3] => Array
(
[id] => 4
[title] => Новость 4
)
[4] => Array
(
[id] => 5
[title] => Новость 5
)
)

Метод fetchAll() и константа PDO::FETCH_OBJ

$result -> setFetchMode ( PDO :: FETCH_OBJ );
print_r ( $result -> fetchAll ());

Получаем массив объектов:
Array
( [0] => stdClass Object
(
[id] => 1
[title] => Новость 1
)
[1] => stdClass Object
(
[id] => 2
[title] => Новость 2
)
.
.
.
)

Источник

Оцените статью