Класс mysqli
(PHP 5, PHP 7)
Введение
Представляет связь между PHP и базой данных MySQL.
Обзор классов
mysqli
{
/* Свойства */
int $affected_rows;
string $client_info;
int $client_version;
int $connect_errno;
string $connect_error;
int $errno;
array $error_list;
string $error;
int $field_count;
int $client_version;
string $host_info;
string $protocol_version;
string $server_info;
int $server_version;
string $info;
string $sqlstate;
int $thread_id;
int $warning_count;
/* Методы */
__construct
([ string
$host
= ini_get("mysqli.default_host")
[, string $username
= ini_get("mysqli.default_user")
[, string $passwd
= ini_get("mysqli.default_pw")
[, string $dbname
= ""
[, int $port
= ini_get("mysqli.default_port")
[, string $socket
= ini_get("mysqli.default_socket")
]]]]]] )
bool real_connect
([ string
}$host
[, string $username
[, string $passwd
[, string $dbname
[, int $port
[, string $socket
[, int $flags
]]]]]]] )Содержание
- mysqli::$affected_rows — Получает число строк, затронутых предыдущей операцией MySQL
- mysqli::autocommit — Включает или отключает автоматическую фиксацию изменений базы данных
- mysqli::begin_transaction — Starts a transaction
- mysqli::change_user — Позволяет сменить пользователя подключенного к базе данных
- mysqli::character_set_name — Возвращает кодировку по умолчанию, установленную для соединения с БД
- mysqli::$client_info — Получает информацию о клиенте MySQL
- mysqli::$client_version — Возвращает информацию о клиенте MySQL в виде строки
- mysqli::close — Закрывает ранее открытое соединение с базой данных
- mysqli::commit — Фиксирует текущую транзакцию
- mysqli::$connect_errno — Возвращает код ошибки последней попытки соединения
- mysqli::$connect_error — Возвращает описание последней ошибки подключения
- mysqli::__construct — Устанавливает новое соединение с сервером MySQL
- mysqli::debug — Выполняет процедуры отладки
- mysqli::dump_debug_info — Журналирование отладочной информации
- mysqli::$errno — Возвращает код ошибки последнего вызова функции
- mysqli::$error_list — Возвращает список ошибок выполнения последней запущенной команды
- mysqli::$error — Возвращает строку с описанием последней ошибки
- mysqli::$field_count — Возвращает число столбцов, затронутых последним запросом
- mysqli::get_charset — Возвращает набор символов в виде объекта
- mysqli::get_client_info — Получает информацию о клиенте MySQL
- mysqli_get_client_stats — Возвращает статистику клиента для каждого процесса
- mysqli_get_client_version — Возвращает информацию о клиенте MySQL в виде строки
- mysqli::get_connection_stats — Возвращает статистику соединения с клиентом
- mysqli::$host_info — Возвращает строку, содержащую тип используемого соединения
- mysqli::$protocol_version — Возвращает версию используемого MySQL протокола
- mysqli::$server_info — Возвращает версию MySQL сервера
- mysqli::$server_version — Возвращает версию сервера MySQL, представленную в виде integer
- mysqli::get_warnings — Получает результат SHOW WARNINGS
- mysqli::$info — Извлекает информацию о последнем выполненном запросе
- mysqli::init — Инициализирует MySQLi и возвращает ресурс для использования в функции mysqli_real_connect()
- mysqli::$insert_id — Возвращает автоматически генерируемый ID, используя последний запрос
- mysqli::kill — Запрос для сервера завершить выполнение процесса MySQL
- mysqli::more_results — Проверка, есть ли еще результаты в мультизапросе
- mysqli::multi_query — Выполняет запрос к базе данных
- mysqli::next_result — Подготовка следующего доступного результирующего набора из multi_query
- mysqli::options — Задание настроек
- mysqli::ping — Проверяет работоспособность соединения или пытается переподключиться, если соединение разорвано
- mysqli::poll — Опрос подключений
- mysqli::prepare — Подготавливает SQL выражение к выполнению
- mysqli::query — Выполняет запрос к базе данных
- mysqli::real_connect — Устанавливает соединение с сервером mysql
- mysqli::real_escape_string — Экранирует специальные символы в строке для использования в SQL выражении, используя текущий набор символов соединения
- mysqli::real_query — Выполнение SQL запроса
- mysqli::reap_async_query — Получение результата асинхронного запроса
- mysqli::refresh — Обновление
- mysqli::release_savepoint — Removes the named savepoint from the set of savepoints of the current transaction
- mysqli::rollback — Откат текущей транзакции
- mysqli::rpl_query_type — Возвращает RPL тип запроса
- mysqli::savepoint — Set a named transaction savepoint
- mysqli::select_db — Устанавливает базу данных для выполняемых запросов
- mysqli::send_query — Отправка запроса и возврат
- mysqli::set_charset — Задает набор символов по умолчанию
- mysqli::set_local_infile_default — Отмена привязки callback-функции для команды load local infile
- mysqli::set_local_infile_handler — Задает callback-функцию для команды LOAD DATA LOCAL INFILE
- mysqli::$sqlstate — Возвращает код состояния SQLSTATE последней MySQL операции
- mysqli::ssl_set — Используется для установления безопасных соединений, используя SSL
- mysqli::stat — Получение информации о текущем состоянии системы
- mysqli::stmt_init — Инициализирует запрос и возвращает объект для использования в mysqli_stmt_prepare
- mysqli::store_result — Передает результирующий набор последнего запроса
- mysqli::$thread_id — Возвращает ID процесса текущего подключения
- mysqli::thread_safe — Показывает, безопасна ли работа с процессами
- mysqli::use_result — Готовит результирующий набор на сервере к использованию
- mysqli::$warning_count — Возвращает количество предупреждений из последнего запроса заданного подключения
- PHP Руководство
- Функции по категориям
- Индекс функций
- Справочник функций
- Расширения для работы с базами данных
- Расширения для работы с базами данных отдельных производителей
- MySQL Drivers and Plugins
- Введение
- Краткий обзор
- Краткое руководство
- Установка и настройка
- Расширение mysqli и постоянные соединения
- Предопределенные константы
- Notes
- Основная информация о функциях расширения MySQLi
- Examples
- Класс mysqli
- The mysqli_stmt class
- The mysqli_result class
- Класс mysqli_driver
- Класс mysqli_warning
- The mysqli_sql_exception class
- Синонимы и устаревшие Функции Mysqli
- Список изменений
Коментарии
<?php
include_once("data/Book.php");
include_once("DatabaseFactory.php");
// CRUD methods for book objects
class BookDB{
private static function getConnection(){
return DatabaseFactory::getDatabase();
}
public static function getAll(){
$query = "SELECT * FROM Book";
// Execute query
$conn = self::getConnection();
$results = $conn->executeQuery($query);
$resultsArray = array();
for($i = 0; $i < $results->num_rows; $i++){
$row = $results->fetch_array(); // Retrieves the current selected row
// Make a book
$book = self::convertRowToObject($row);
// Add book to resultsArray
$resultsArray[$i] = $book;
}
return $resultsArray;
}
public static function convertRowToObject($row){
return new Book(
$row["BookId"],
$row["Title"],
$row["Releasedate"],
$row["Price"],
$row["EmailPublisher"]
);
}
public static function insert($book){
return self::getConnection()->executeQuery("INSERT INTO Book(Title, Releasedate, Price, EmailPublisher) VALUES ('?', '?', '?', '?')", array($book->title, $book->releasedate, $book->priceExclVAT, $book->emailPublisher));
}
}
?>
<?php
class Database{
protected $url;
protected $user;
protected $password;
protected $db;
protected $connection = null;
public function __construct($url, $user, $password, $db)
{
$this->url = $url;
$this->user = $user;
$this->password = $password;
$this->db = $db;
}
public function __destruct()
{
if($this->connection != null){
$this->closeConnection();
}
}
protected function makeConnection(){
$this->connection = new mysqli($this->url, $this->user, $this->password, $this->db);
if($this->connection->connect_error){
echo "Fail" . $this->connection->connect_error;
}
}
protected function closeConnection(){
if($this->connection != null){
$this->connection->close();
$this->connection = null;
}
}
public function executeQuery($query, $params = null){
// Is there a DB connection?
$this->makeConnection();
// Adjust query with params if available
if($params != null){
// Change ? to values from parameter array
$queryParts = preg_split("/\?/", $query);
// if amount of ? is not equal to amount of values => error
if(count($queryParts) != count($params) + 1){
return false;
}
// Add first part
$finalQuery = $queryParts[0];
// Loop over all parameters
for($i = 0; $i < count($params); $i++){
// Add clean parameter to query
$finalQuery = $finalQuery . $this->cleanParameters($params[$i]) . $queryParts[$i + 1];
}
$query = $finalQuery;
}
// Check for SQL injection
$result = $this->connection->query($query);
return $result;
}
protected function cleanParameters($parameters){
// prevent SQL injection
$result = $this->connection->real_escape_string($parameters);
return $result;
}
}
?>
<?php
include_once("Database.php");
class DatabaseFactory{
// Singleton
private static $connection;
public static function getDatabase(){
if(self::$connection == null){
$url = "dt5.ehb.be";
$user = "1920WEBINT038";
$passw = "94617528";
$db = "1920WEBINT038";
self::$connection = new Database($url, $user, $passw, $db);
}
return self::$connection;
}
}
?>
<?php
class Book{
public $bookId;
public $title;
public $releasedate;
public $priceExclVAT;
public $emailPublisher;
public function __construct($bookId, $title, $releasedate, $priceExclVAT, $emailPublisher)
{
$this->bookId = $bookId;
$this->title = $title;
$this->releasedate = $releasedate;
$this->priceExclVAT = $priceExclVAT;
$this->emailPublisher = $emailPublisher;
}
}
?>