Расширение mysqli. Быстрый старт

MySQL -> MySQLiПочему нужно использовать расширение mysqli вместо mysql?

  1. Оно предоставляет больше функциональности,
  2. позволяет использовать объектно-ориентированный стиль,
  3. предоставляет более безопасный доступ к базе данных,
  4. продолжает развиваться и поддерживаться.

Установка в Ubuntu

В терминале нужно набрать следующее:

sudo aptitude install php5-mysqlnd

Если у Вас нет утилиты aptitude, то можно написать так:

sudo apt-get install php5-mysqlnd

Рабочий пример

<?php

$db_host = 'localhost'; // Адрес сервера, где находится база данных
$db_port = '3306'; // Порт 3306 - по умолчанию
$db_name = 'my_database'; // Название базы данных
$db_user = 'username'; // Имя пользователя базы данных
$db_password = '1234567890'; // Пароль

// Подключаемся к базе данных
$DB = new mysqli($db_host, $db_user, $db_password, $db_name, $db_port);

// SQL-запрос. Символом '?' (вопрос) указываем параметр, 
// который нужно вставить в запрос
$sql = <<<EOT
select `id` 
from `fields` 
where `shortname` = ?
EOT;

$shortname = 'name_of_field';

// Подготавливаем запрос.
// Проверяем наличие таблиц, указанных в запросе
$stmt = $DB->prepare($sql);

// Вставляем нужный параметр в запрос. Экранируем все спец-символы.
$stmt->bind_param('s', $shortname);

// Выполняем запрос
$stmt->execute();

// Получаем результат запроса
$data = $stmt->get_result()->fetch_array(MYSQLI_ASSOC);
?>

В результате в переменной $data будет массив такого вида:

array(1) {
    ["id"]=>int(1234)
}

Если требуется получить все строчки таблицы сразу, нужно вместо метода fetch_array использовать метод fetch_all, т.е. последняя строчка кода будет выглядеть так:

$data = $stmt->get_result()->fetch_all(MYSQLI_ASSOC);

Ссылки на документацию, для подробного ознакомления с расширением

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *