Извлечение данных из базы данных онлайн урок.


Для получения данных из БД, создадим новую таблицу tbl_message и запишем в нее одну строку, к примеру. В качестве БД будем использовать my_db из курса по MySQL

CREATE TABLE IF NOT EXISTS tbl_message (
id smallint(5) unsigned NOT NULL,
name varchar(50) NOT NULL,
email varchar(50) NOT NULL,
phone char(9) DEFAULT NULL,
message text NOT NULL
) ENGINE=InnoDB;

INSERT INTO tbl_message (name, email, phone, message) VALUES
('Bobby', 'bobby@mailbox.com', '435-64-34', 'Hello. I want some crystal meth.');


Теперь необходимо подключится к базе данных и получить данные из таблицы. Запишем соответствующие инструкции в test.php

Замечание. Вставьте свои значения host, username, password для подключения к базе данных

$dbh = new PDO('mysql: host=localhost; dbname=my_db', 'root', '');
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sth = $dbh->query('SELECT * FROM tbl_message');
$data = $sth->fetch(PDO::FETCH_ASSOC);


Напомним, что работу с PDO необходимо заключать в блок try. В случае ошибки, мы словим исключение и определим соответствующий статус (fail).

try {
   $dbh = new PDO('mysql: host=localhost; dbname=my_db', 'root', '');
   $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
   $sth = $dbh->query('SELECT * FROM tbl_message');
   $data = $sth->fetch(PDO::FETCH_ASSOC);
} catch (PDOException $e) {
   $status = 'fail: ' . $e->getMessage();
}


Осталось определить статус по умолчанию и отобразить данные в качестве JSON строки

$msg_info = array();
$status = 'Success';

try {
   $dbh = new PDO('mysql: host=localhost; dbname=my_db', 'root', '');
   $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
   $sth = $dbh->query('SELECT * FROM tbl_message');
   $msg_info = $sth->fetch(PDO::FETCH_ASSOC);
} catch (PDOException $e) {
   $status = 'Fail: ' . $e->getMessage();
}

$data = array(
   'msg_info' => $msg_info,
   'status' => $status
);

  echo json_encode($data);


Выведем теперь наши данные на экран, добавив немного логики относительно статуса: