Verification: a143cc29221c9be0

Mysql и php подключение и проверка подключения

Mysql и php подключение и проверка подключения

Создание Базы Данных MySQL (При необходимости)

Этот шаг можно пропустить, если у вас уже есть база данных MySQL. Если вы являетесь пользователем Hostinger, вы можете легко создать новую БД через hPanel — панель управления хостингом Hostinger, следуя простой инструкции:

  1. Найдите меню «Базы данных MySQL» в разделе «Базы данных».
  2. Заполните все необходимые поля и нажмите «Создать».
    Страница Создания БД MySQL в hPanel

Инструкции по созданию базы данных MySQL с помощью cPanel см. в этом руководстве (англ.). Однако имейте в виду, что это пустые базы данных. Вам нужно будет заполнить их данными, прежде чем вы сможете ими управлять.

Запишите учётные данные только что созданной базы данных MySQL для следующего шага. А также не забудьте имя пользователя и пароль к БД!

Два способа PHP-подключения к БД MySQL

Есть два метода подключения к базе данных MySQL с помощью PHP: MySQLi и PDO.

MySQLi расшифровывается как MySQL Improved. Это эксклюзивное расширение MySQL, которое добавляет новые функции в интерфейс базы данных. Функции MySQLi являются как процедурными, так и объектно-ориентированными, причём первую парадигму расширение унаследовало от более ранней версии MySQL.

Сама MySQL разбивает задачу на линейные, пошаговые процедуры, что затрудняет внесение изменений, поскольку вам приходится редактировать код сверху. Между тем MySQLi рассматривает данные как набор взаимозаменяемых объектов с функциями, позволяя пользователям легко добавлять или удалять данные.

PDO расшифровывается как PHP Data Object, или объект данных PHP. В отличие от MySQLi, PDO является только объектно-ориентированным методом. Он поддерживает ряд различных типов баз данных, использующих PHP, таких как MySQL, MSSQL, Informix и PostgreSQL.

Исходные функции mysql_ устарели. Их лучше не использовать, поскольку они небезопасны и больше не поддерживаются.

Одна из наиболее важных функций, которую поддерживают оба метода — это подготовленные выражения (prepared statements). Она сокращает время, необходимое MySQL для выполнения повторяемого запроса. Эта функция также используется для предотвращения SQL-инъекций при внесении изменений в базу данных.

Какой бы метод вы ни использовали, вам понадобится правильная информация для подключения к созданной вами базе данных MySQL. Здесь вам пригодятся ранее сохранённые данные БД.

Вам также потребуется правильное имя сервера, или имя хоста для конфигурации. Hostinger использует “localhost” в качестве имени хоста своего сервера MySQL. Это имя, которое вы будете использовать, если загрузите свой PHP-скрипт на тот же сервер, что и база данных.

С другой стороны, если вы подключаетесь к базе данных из удалённого места (например, со своего компьютера), вам придётся использовать IP-адрес MySQL-сервера. Чтобы получить дополнительную информацию, обратитесь к своему хостинг-провайдеру. Он предоставит вам актуальную информацию о том, какое имя использовать в качестве имени хоста.

PHP-подключение к БД MySQL с MySQLi

Выполните следующие действия, чтобы подключить PHP-скрипт к MySQL посредством MySQLi:

  1. Перейдите в Файловый менеджер -> public_html.
  2. Создайте новый файл, щёлкнув на соответствующую иконку в верхнем меню.
  3. Сохраните его как databaseconnect.php. Вы можете заменить имя на любое другое, просто убедитесь, что в качестве расширения используется php.
  4. Дважды щёлкните по файлу, чтобы открыть его. Скопируйте и вставьте в него следующие строки кода. Замените первые четыре значения после учётными данными, которые вы указали ранее.

Объяснение Кода MySQLi

Основным методом, используемым в этом скрипте, является mysqli_connect (). Это внутренняя функция PHP для установления нового соединения с сервером MySQL.

В начале нашего кода мы видим несколько объявлений переменных и значений, присвоенных этим переменным. Обычно нам нужно четыре из них, чтобы установить правильное соединение с базой данных: $servername, $database, $username и $password. В коде мы указываем наши данные для доступа к БД как значения для этих переменных, чтобы их можно было передать в функцию.

Если попытка соединения была неудачной, выполняется функция die(). Она убивает наш скрипт и выдаёт сообщение об ошибке подключения, которое мы прописали. По умолчанию в сообщении об ошибке подключения MySQL будет указано «Connection failed», за которым следует точное сообщение об ошибке с описанием проблемы.

С другой стороны, если MySQL-соединение установлено успешно, мы увидим сообщение «Connected successfully».

Последняя часть кода, mysqli_close, позволяет закрыть соединение с базой данных вручную. Если вы ничего не укажите, соединения MySQL закроются автоматически после завершения скрипта.

PHP-подключение к БД MySQL с PDO

Другой метод подключения к БД MySQL с использованием PHP-скрипта — через PDO. В целом он похож на предыдущий, но с некоторыми особенностями:

  1. В public_html создайте файл с названием pdoconfig.php и вставьте следующий код. Как всегда, не забудьте заменить значения плейсхолдеров информацией из вашей базы данных. Сохраните и закройте его, когда закончите.
  2. Создайте ещё один файл и назовите его databaseconnect.php в том же каталоге, но со следующим кодом. Если вы назвали предыдущий файл по-другому, не забудьте изменить значение после require_once.
    getMessage());
    }

Объяснение Скрипта PDO

Для подключения к базе данных PDO необходимо создать новый объект PDO с именем источника данных (DSN), именем пользователя и паролем.

DSN определяет тип базы данных, имя базы данных и любую другую информацию, относящуюся к базе данных, если это необходимо. Это переменные и значения, указанные нами в файле dbconfig.php, на которые один раз ссылается строка require_once в файле databaseconnect.php.

В последнем примере вы найдёте код try… catch... Это означает, что скрипт попытается подключиться к MySQL, используя предоставленный код, но в случае возникновения проблемы будет выполнен код в разделе catch. Вы можете использовать блок catch для отображения сообщений об ошибках подключения или запустить альтернативный код в случае сбоя блока try.

Если соединение установлено успешно, вы увидите сообщение «Connected to $dbname at $host successfully». Однако, если попытка не удалась, код в блоке catch покажет простое сообщение об ошибке и завершит скрипт.

Проверка Подключения и Устранение Распространённых Ошибок

Чтобы проверить, успешно ли установлено соединение, войдите в свой домен так: vashdomen/databaseconnect.php. Если вы назвали PHP-файл другим именем, обязательно укажите правильное название.

Если всё работает хорошо, вы увидите «Connected successfully» или другой вариант этого сообщения.

В случае возникновения проблемы при попытке установить соединение, вы увидите сообщения об ошибке. Они отличаются для MySQLi и PDO.

Ошибка при Неправильном Пароле

Эта ошибка возникает, если мы меняем пароль или какие-либо учётные данные в PHP-коде (но не меняем их в реальной базе данных).

Если вы видите сообщение «Access denied» или «Could not connect to database», сопровождаемое “(using password: YES)”, первое, что нужно сделать, это проверить данные для доступа к БД. Возможно, вы сделали опечатку или пропустили какую-то часть.

Не Удаётся Подключиться к MySQL-серверу

Если вы видите сообщение «Can’t connect to MySQL server on ‘server’ (110)» в MySQLi, это означает, что скрипт не получил ответа от сервера. Это происходит, когда мы устанавливаем «server» вместо «localhost» в качестве $servername, и имя не распознаётся.

Сообщение об аналогичной ошибке в PDO будет выглядеть как: «Connection failed: SQLSTATE[Hy000] [2002]». А за ним следует уточнение, что узел MySQL не найден. Причина и решение этой проблемы такое же, как и в предыдущем примере.

И, конечно же, всегда важно помнить одно золотое правило устранения ошибок: проверять журнал ошибок вашего сайта.

Журнал находится в той же папке, где запущен скрипт. Например, если мы запускаем сценарий в public_html, error_log будет в той же папке.

Объектно-ориентированный метод MySQLi

В данном случае, мы создаем экземпляр класса mysqli, с которым далее работаем. При создании, в параметрах задаем информацию о сервере, доступах подключения и имени конкретной базы данных, заданную переменными. Естественно, можно не использовать переменные, а указать строкой данные, но для удобства работы с проектом, подобные параметры удобнее вывести в единый раздел или файл конфигурации.

// выполнение подключения
$db = new mysqli($db_host, $db_user, $db_pass, $db_name);

// проверка на успешное подключение и вывод ошибки, если оно не выполнено
if ($db->connect_error) {
	echo "Нет подключения к БД. Ошибка:".mysqli_connect_error();
	exit;
}

// операции с БД, например:
$my_data = $db->query("SELECT * FROM my_table");

// завершение подключения
$db->close();

Процедурный подход к использованию MySQLi

Если для вас более привычен и понятен порядок работы в процедурном формате, то можно использовать этот же метод, но в ином синтаксисе. Такое решение будет удобно, в случае переноса старого проекта, реализованного на MySQL, на версию PHP. Будет меньше изменений в коде.

// выполнение подключения
$db = mysqli_connect($db_host, $db_user, $db_pass, $db_name)
	or die('Ошибка: подключение не выполнено.'); // сообщение об ошибке

// операции с БД, например:
$my_data = mysqli_query($db,"SELECT * FROM my_table");

// завершение подключения
mysqli_close($db);

Подключение к БД средствами PDO

Хорошим решением для работы с веб-проектами является применение технологии PDO (PHP Data Objects). Преимущество технологии в том, что с ее помощью можно работать с различными БД, не меняя основной код проекта.

// выполнение подключения
try {
	$db = new PDO("mysql:host=$db_host;dbname=$db_name", $db_user, $db_pass);
	$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e) { // обработчик в случае ошибки подключения
	echo "Ошибка: " . $e->getMessage();
}

// операции с БД, например:
$my_data = $db->query("SELECT * FROM eddb_projects");

// завершение подключения
$db = null;

Подключение MySQL (для старых версий PHP)

Если по какой-то причине, необходима работа в старых версиях PHP или работа с древними проектами, стоит иметь представление о таком подходе. Реализация подобна процедурной MySQLi, т.к. является ее предыдущей версией.

// выполнение подключения
$db = mysql_connect($db_host, $db_user, $db_pass)
	or die('Ошибка: подключение не выполнено.'); // сообщение об ошибке подключения
mysql_select_db($db_name, $db)
	or die('Ошибка: БД не найдена.');

// операции с БД, например:
$my_data = mysql_query("SELECT * FROM my_table");

// завершение подключения
mysql_close($db);

Какой тип подключения к БД выбрать?

Технология подключения всегда выбирается разработчиком исходя из удобства, личных предпочтений и конкретных условий проекта. Главное, чтобы вы понимали рамки проекта и его перспективы. Естественно, не стоит пользоваться древними технологиями и решениями, если есть возможность применить что-то новое и более эффективное.

Если проект небольшой, и не планируется его сложное расширение, то вероятно будет достаточно MySQLi. Причем, лучше объектно-ориентированный подход, т.к. позволяет хорошо структурировать проект.

Если вы разрабатываете систему, которая будет динамически развиваться, возможно вам потребуется заменить БД, с целью работать с большими объемами записей. Здесь лучше реализовать средствами PDO. В последствии, вам не придется изменять много имеющегося кода в связи такими обновлениями.

Что использовать MySQLi или PDO?

Если вам нужен короткий ответ, выбирайте "Что вам нравится".

MySQLi и PDO, имеют свои преимущества:

PDO работает на различных 12 системах баз данных, а MySQLi, с базами данных MySQL

Так что, если вам придется переключить проект, чтобы использовать другую базу данных, PDO делает процесс переключения легче. Вам потребуется только, изменить строку подключения и несколько запросов.

MySQLi, понадобится переписывать весь код - из числа запросов.

Оба они, являются объектно-ориентированными, но MySQLi также предлагает процедурный API.

Оба поддерживают подготовленные заявления. Подготовленные заявления, защищают от SQL-инъекций, и имеют очень важное значение для безопасности веб-приложений.


Примеры MySQL в синтаксисе MySQLi и PDO

В этой и в следующих главах мы продемонстрируем три способа работы с PHP и MySQL:

  • MySQLi - объектно-ориентированный
  • MySQLi - процессуальный
  • PDO

MySQLi Установка

Для Linux и Windows: MySQLi расширение в большинстве случаев устанавливается автоматически, при устанавки пакета php5 MySQL.

Для установки деталей перейти по: https://php.net/manual/en/mysqli.installation.php


PDO Установка

Для установки деталей перейти по: https://php.net/manual/en/pdo.installation.php

MySQL Открыть подключение

Прежде, чем, мы сможем получить доступ к данным в базе данных MySQL, мы должны подключиться к серверу:

Пример MySQLi - объектно-ориентированный

// Подключение к MySQL
$servername = "localhost"; // локалхост
$username = "root"; // имя пользователя
$password = ""; // пароль если существует

// Создание соединения
$conn = new mysqli($servername, $username, $password);

// Проверка соединения
if ($conn->connect_error) {
   die("Ошибка подключения: " . $conn->connect_error);
}
echo "Успешное подключение";
?>


PHP - удивительный и популярный язык!

Обратите внимание на объектно-ориентированный пример выше: $connect_error пока был разделен, на версии PHP 5.2.9 и PHP 5.3.0. Если вам нужно обеспечить совместимость версий PHP 5.2.9 и 5.3.0, используйте следующий код

// Проверка соединения
if (mysqli_connect_error()) {
   die("Ошибка подключения: " . mysqli_connect_error());
}

Пример MySQLi - процессуальный

// Подключение к MySQL
$servername = "localhost"; // локалхост
$username = "root"; // имя пользователя
$password = ""; // пароль если существует

// Создание соединения
$conn = mysqli_connect($servername, $username, $password);

// Проверка соединения
if (!$conn) {
   die("Ошибка подключения: " . mysqli_connect_error());
}
echo "Успешное подключение";
?>


Пример PDO

// Подключение к MySQL
$servername = "localhost"; // локалхост
$username = "root"; // имя пользователя
$password = ""; // пароль если существует
//$dbname = "myDB"; // база данных изключение

// Создание соединения и исключения
try {
   $conn = new PDO("mysql:host=$servername;dbname=myDB", $username, $password);

   // Установить режим ошибки PDO в исключение
   $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
   echo "Успешное подключение";
   }
catch(PDOException $e) // класс исключения
   {
   echo "Ошибка подключения:" . $e->getMessage();
   }
?>

Обратите внимание, что в примере PDO выше, мы дополнительно указали базу данных "myDB". PDO требует базу данных к подключению. Если база данных не указана, выдается исключение.

Совет: Большим преимуществом PDO является то, что он имеет класс исключения для решения любых проблем, которые могут возникнуть в запросах к базе данных. Если исключение выдается внутри блока try {}, сценарий прекращает выполнение и переходит непосредственно к первому блоку catch() { }.


Как выглядит работа с базой данных

Типичный процесс работы с СУБД в PHP-сценарии состоит из нескольких шагов:

  1. Установить подключение к серверу СУБД, передав необходимые параметры: адрес, логин, пароль.
  2. Убедиться, что подключение прошло успешно: сервер СУБД доступен, логин и пароль верные и так далее.
  3. Сформировать правильный SQL запрос (например, на чтение данных из таблицы).
  4. Убедиться, что запрос был выполнен успешно.
  5. Получить результат от СУБД в виде массива из записей.
  6. Использовать полученные записи в своём сценарии (например, показать их в виде таблицы).

Функция mysqli connect: соединение с MySQL

Перед началом работы с данными внутри MySQL, нужно открыть соединение с сервером СУБД.
В PHP это делается с помощью стандартной функции mysqli_connect(). Функция возвращает результат — ресурс соединения. Данный ресурс используется для всех следующих операций с MySQL.

Но чтобы выполнить соединение с сервером, необходимо знать как минимум три параметра:

  • Адрес сервера СУБД;
  • Логин;
  • Пароль.

Если вы следовали стандартной процедуре установки MySQL или используете OpenServer, то адресом сервера будет localhost, логином — root. При использовании OpenServer пароль для подключения — это пустая строка ‘’, а при самостоятельной установке MySQL пароль вы задавали в одном из шагов мастера установки.

Базовый синтаксис функции mysqli_connect():

mysqli_connect(, , , );

Проверка соединения

Первое, что нужно сделать после соединения с СУБД — это выполнить проверку, что оно было успешным.
Эта проверка нужна, чтобы исключить ошибку при подключении к БД. Неверные параметры подключения, неправильная настройка или высокая нагрузка заставит MySQL отвеграть новые подключения. Все эти ситуации приведут к невозможности соединения, поэтому программист должен проверить успешность подключения к серверу, прежде чем выполнять следующие действия.

Соединение с MySQL устанавливается один раз в сценарии, а затем используется при всех запросах к БД.
Результатом выполнения функции mysqli_connect() будет значение специального типа — ресурс.
Если подключение к MySQL не удалось, то функция mysqli_connect() вместо ресурса вернет логическое значение типа «ложь» — false.
Хорошей практикой будет всегда проверять значение результа выполнения этой функции и сравнивать его с ложью.

Соединение с MySQL и проверка на ошибки:

Функция mysqli_connect_error() просто возвращает текстовое описание последней ошибки MySQL.

Установка кодировки

Первым делом после установки соединения крайне желательно явно задать кодировку, которая будет использоваться при обмене данными с MySQL. Если этого не сделать, то вместо записей со значениями, написанными кириллицей, можно получить последовательность из знаков вопроса: ‘?????????????????’.
Вызови эту функцию сразу после успешной установки соединения: mysqli_set_charset($con, "utf8");

Выполнение запросов

Установив соединение и определив кодировку мы готовы выполнить свои первые SQL-запросы. Вы уже умеете составлять корректные SQL команды и выполнять их через консольный или визуальный интерфейс MySQL-клиента.
Те же самые запросы можно отправлять без изменений и из PHP-сценария. Помогут в этом несколько встроенных функций языка.

Два вида запросов

Следует разделять все SQL-запросы на две группы:

  1. Чтение информации (SELECT).
  2. Модификация (UPDATE, INSERT, DELETE).

При выполнении запросов из среды PHP, запросы из второй группы возвращают только результат их исполнения: успех или ошибку.
Запросы первой группы при успешном выполнении возвращают специальный ресурс результата. Его, в свою очередь, можно преобразовать в ассоциативный массив (если нужна одна запись) или в двумерный массив (если требуется список записей).

Добавление записи

Вернёмся к нашему проекту — дневнику наблюдений за погодой. Начнём практическую работу с заполнения таблиц данными. Для начала добавим хотя бы один город в таблицу cities.

Выражение INSERT INTO используется для добавления новых записей в таблицу базы данных.

Составим корректный SQL-запрос на вставку записи с именем города, а затем выполним его путём передачи этого запроса в функцию mysqli_query(), чтобы добавить новые данные в таблицу.

Обратите внимание, что первым параметром для функциии mysqli_query() передаётся ресурс подключения, полученный от функции mysqli_connect(), вторым параметром следует строка с SQL-запросом.
При запросах на изменение данных (не SELECT) результатом выполнения будет логическое значение — true или false.
false будет означать, что запрос выполнить не удалось. Для получения строки с описанием ошибки существует функция mysqli_error($link).

Функция insert id: как получить идентификатор добавленной записи

Следующим шагом будет добавление погодной записи для нового города.
Погодные записи хранит таблица weather_log, но, чтобы сослаться на город, необходимо знать идентификатор записи из таблицы cities.
Здесь пригодится функция mysqli_insert_id().
Она принимает единственный аргумент — ресурс соединения, а возвращает идентификатор последней добавленной записи.

Теперь у нас есть всё необходимое, чтобы добавить погодную запись.
Вот как будет выглядеть комплексный пример с подключением к MySQL и добавлением двух новых записей:

MySQL Выбрать данные из базы данных

Заявление SELECT используется для выбора данных из одной или нескольких таблиц:

SELECT column_name(s)FROM table_name

или мы можем использовать символ * для выбора всех столбцов из таблицы:

SELECT *FROM table_name

Чтобы узнать больше о SQL, пожалуйста, посетите наш Учебник SQL.


MySQL Выбрать данные

В следующем примере из таблицы "Мои Гости" выбираем столбцы "Индентификатора", "Имя" и "Фамилию", для отображения на странице:

Пример MySQLi - объектно-ориентированный

// Подключение к MySQL
$servername = "localhost"; // локалхост
$username = "root"; // имя пользователя
$password = ""; // пароль если существует
$dbname = "myDB"; // база данных

// Создание соединения
$conn = new mysqli($servername, $username, $password, $dbname);

// Проверка соединения
if ($conn->connect_error) {
   die("Ошибка подключения: " . $conn->connect_error);
}

// Выбрать данные
$sql = "SELECT id, firstname, lastname FROM MyGuests";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
   // Выводим данные каждой строки
   while($row = $result->fetch_assoc()) {
       echo "id:" . $row["id"]. " Имя: " . $row["firstname"]. " " . $row["lastname"]. "
";
    }
} else {
   echo "0 результат";
}

// Закрыть подключение
$conn->close();
?>

Смотреть код »

Объяснение примера:

Во-первых, мы создали SQL запрос, который выбирает ID, firstname и lastname из MyGuests столбика. Следующая строка кода запускает запрос и помещает полученные данные в переменную $result.

Затем функция num_rows() проверяет наличие более чем ноля строк и возвращает их.

Если, возвращено более чем ноля строк, функция fetch_assoc() помещает все результаты в ассоциативный массив, через который мы можем проследить. В цикл while() проходит через результирующий набор и выводит данные от ID, firstname и lastname.

В следующем примере показано то же самое, что и в примере выше, процессуальный способом mysqli:

Пример MySQLi - процессуальный

// Подключение к MySQL
$servername = "localhost"; // локалхост
$username = "root"; // имя пользователя
$password = ""; // пароль если существует
$dbname = "myDB"; // база данных

// Создание соединения
$conn = mysqli_connect($servername, $username, $password, $dbname);

// Проверка соединения
if (!$conn) {
   die("Ошибка подключения: " . mysqli_connect_error());
}

// Выбрать данные
$sql = "SELECT id, firstname, lastname FROM MyGuests";
$result = mysqli_query($conn, $sql);

if (mysqli_num_rows($result) > 0) {
   // Выводим данные каждой строки
   while($row = mysqli_fetch_assoc($result)) {
       echo "id:" . $row["id"]. " Имя Фамилия: " . $row["firstname"]. " " . $row["lastname"]. "
";
   }
} else {
   echo "0 результат";
}

// Закрыть подключение
mysqli_close($conn);
?>

Смотреть код »

Вы также можете поместить результат в таблицу HTML

Пример MySQLi - объектно-ориентированный

// Подключение к MySQL
$servername = "localhost"; // локалхост
$username = "root"; // имя пользователя
$password = ""; // пароль если существует
$dbname = "myDB"; // база данных

// Создание соединения
$conn = new mysqli($servername, $username, $password, $dbname);

// Проверка соединения
if ($conn->connect_error) {
   die("Ошибка подключения: " . $conn->connect_error);
}

// Выводим данные каждой строки
$sql = "SELECT id, firstname, lastname FROM MyGuests";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
   echo "

";
   // Выводим данные каждой строки
   while($row = $result->fetch_assoc()) {
       echo "";
   }
   echo "
ID Имя Фамилия
".$row["id"]." ".$row["firstname"]." ".$row["lastname"]."
";
} else {
   echo "0 результат";
}

// Закрыть подключение
$conn->close();
?>

Смотреть код »


Подключение к MySQL через одноименное расширение

Расширение MySQL появилось первым и долгое время не имело конкурентов. Сейчас считается устаревшим и в серьезных проектах не используется. На это есть ряд причин, основными из которых являются плохая оптимизация и безопасность, отсутствие многопоточности. Несмотря на это, оно ещё долго будет поддерживаться большинством хостингов.

Начиная с PHP версии 5.5 многие функции расширения стали устаревшими, а в PHP 7 и вовсе не поддерживаются.

Рассмотрим пример подключения к базе данных с комментариями.

// Подключаемся к серверу БД
$mysql = mysql_connect($db_server, $db_user, $db_password);
if (!$mysql) { die ('Connection error: ' . mysql_error()); }

// Выбираем БД
$db = mysql_select_db($db_name, $mysql);
if (!$db) { die ('Error select db : ' . mysql_error()); }

// Устанавливаем кодировку подключения
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");

// Запросы ...

// Отключаемся от базы
mysql_close($mysql);

В качестве запросов используется стандартный SQL. Рассмотрим простые примеры выборки и добавления записей.

// Составляем запрос
$sql = 'SELECT * FROM `books` WHERE `BAuthor`="Пушкин"';
$result = mysql_query($sql);

// Перебор результата
while($row = mysql_fetch_array($result)) {
    print $row['BName'] . '
'; }

В примере производим простую выборку записей из таблицы «books». Результат представлен в качестве ассоциативного массива, поэтому его содержимое можно получить в обычном цикле. Если запрос не возвращает набор данных, то в качестве результата возвращается «false» или «true».

$sql = 'SELECT * FROM `books` WHERE `BAuthor`="Пушкин"';
$result = mysql_query($sql);

if ($result) { echo 'Выполнено!'; }
else { echo 'Ошибка: ' . mysql_error(); }

Отличие MySQLi от MySQL

MySQLi пришло на смену MySQL. Буква «i» обозначает улучшенный (Improved). Имеет частичную совместимость со старой версией. Поддерживается всеми версиями PHP. Имеет чуть большую скорость работы и лучшую безопасность. Установлено на 99% хостинговых площадках.

phpinfo

Одной из важных особенностей является наличие объектно-ориентированного интерфейса. Если раньше работы с базой данных осуществлялись при помощи интерфейса функций, то теперь можно использовать оба подхода. Рассмотрим пример подключения к базе данных через MySQLi средствами «ООП».

// Пытаемся соединиться
$mysqli = new mysqli($db_server, $db_user, $db_password, $db_name);

// Проверяем, удалось ли соединение
if (mysqli_connect_errno()) { 
    printf("Connect failed: %s\n", mysqli_connect_error()); 
    exit(); 
}

// Устанавливаем кодировку подключения
$mysqli->set_charset('utf8');

// Формируем запрос
$sql = 'SELECT * FROM `books` WHERE `BAuthor`="Пушкин"';
$result = $mysqli->query($sql);

// Перебор результата
while($row = $result->fetch_object()) {
    print $row->BName .'
'; } // Освобождаем память $result->free(); // Закрываем соединение $mysqli->close();

Так осуществляется простая выборка названий книг из поля «BName» таблицы «books». Вставка и обновление существующих записей так же не отличается сложностью.

$sql = 'UPDATE `books` SET `BPrice` = "99" WHERE `BId`=1';
$result = $mysqli->query($sql);
print ($result)?'Success!':'Error : ('. $mysqli->errno .') '. $mysqli->error;

В конце запроса осуществляем проверку, удалось ли обновить запись.