Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
- class Result
- {
- private $stmt = null;
- private $result = null;
- public function __construct($min, $max)
- {
- $stmt = $mysqli->stmt_init();
- try {
- $this->prepare();
- $this->bind($min, $max);
- $this->execute();
- $this->attachResult();
- $this->store();
- $this->fetch();
- $this->close();
- } catch (Exception $e) {
- Debug.log('Select Error (' . $stmt->errno . ') ' . $stmt->error);
- }
- }
-
- // подготовливаем запрос, там куда будут вствлятся данные отмечаем символом ? (плейсхолдоры)
- private function prepare()
- {
- $this->stmt->prepare("SELECT title FROM sk2_articles WHERE id > ? and id < ?")
- }
-
- // привязываем переменные к плейсхолдорам
- private function bind($min, $max)
- {
- $this->stmt->bind_param('ii', $min, $max);
- }
-
- // отрправляем даные, которые на данный момент находятся в привязанных переменных
- private function execute()
- {
- $this->stmt->execute();
- }
-
- // привязывем переменую для получения в нее результата
- private function attachResult()
- {
- $this->stmt->bind_result($this->result);
- }
-
- // делаем запрос буферизированным,
- // если бы этой строки не было, запрос был бы небуферезированым
- private function store()
- {
- $this->stmt->store_result();
- }
-
- // получение результата в привязанную переменную
- private function fetch()
- {
- $this->stmt->fetch();
- }
-
- private function close()
- {
- $stmt->close();
- }
-
- public function getResult()
- {
- return $this->result;
- }
- }
-
- $id_min = 81;
- $id_max = 88;
- $result = new Result($id_min, $id_max);
- print $result->getResult();
* This source code was highlighted with Source Code Highlighter.real_connect() real_query() real_escape_string()
Последние годы я писал сайты исключительно на фреймворках, что избавляло меня от работы с БД напрямую. Некоторое время назад начал работу над сайтом на чистом php
(a) чтоб на каждое F5 цифра была новая, и (b) запрос к БД уже надо делать
SELECT * FROM posts WHERE id = ? не даст, поскольку СУБД тоже кешировать умеет. /**
* @var PDO
*/
$db;
$statement = $db->prepare($sql);
$statement = $db->execute(array($param));
$result = $statement->fetchAll();
// Ещё короче.
$statement = $db->query($sql, array($param));
$result = $statement->fetchAll();
MySQLi раскладываем все по полочкам