Как подключить базу данных php
Перейти к содержимому

Как подключить базу данных php

  • автор:

3 метода подключения к MySQL с PHP с примерами кода

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

В этой статье описаны следующие три метода, а также соответствующие примеры PHP-кода, в которых объясняется, как подключиться к вашей базе данных из PHP.

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

1. Подключение к PHP с помощью расширения mysqli
* mysqli означает MySQL Improved

Создайте следующий файл mysqli.php

connect_error) < die("Ошибка: невозможно подключиться: " . $conn->connect_error); > echo 'Подключились к базе.
'; $result = $conn->query("SELECT id FROM goroda"); echo "Количество строк: $result->num_rows"; $result->close(); $conn->close(); ?>

В приведенном выше коде:

    mysqli — эта функция инициирует новое соединение с использованием расширения mysqli. Функция принимает четыре аргумента:

  1. localhost имя хоста, на котором запущена база данных MySQL
  2. name — имя пользователя MySQL для подключения
  3. pass — пароль для пользователя mysql
  4. db — база данных MySQL для подключения.
Подключились к базе. Количество строк: 6

2. Подключение из PHP MySQL PDO Extension
* PDO означает объекты данных PHP

Драйвер PDO_MYSQL реализует интерфейс PDO, предоставляемый PHP, для подключения из вашего PHP-скрипта к базе данных MySQL.

Создайте следующий файл mysql-pdo.php:

setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); echo 'Подключились к базе.
'; $sql = 'SELECT id FROM goroda'; print "Список id:
"; foreach ($conn->query($sql) as $row) < print $row['id'] . "
"; > $conn = null; > catch(PDOException $err) < echo "Ошибка: невозможно подключиться: " . $err->getMessage(); > ?>

В приведенном выше:

    new PDO — создаст новый объект PDO, который примет следующие три аргумента:

  1. mysql connect string: он будет в формате «mysql:host=localhost;dbname=db». В приведенном выше примере db работает на localhost, и мы подключаемся к базе данных db.
  2. Имя пользователя MySQL для подключения
  3. Пароль для пользователя mysql
Подключились к базе. Список id: 1 2 3 4 5 6

3. Подключение из PHP c использование устаревших функций mysql

Используйте этот метод, только если вы используете более старую версию PHP и по какой-то причине не можете обновить ее до новой версии. Рекомендуется использовать метод №2 и метод №3, показанные выше, вместо этого метода. Я включил этот метод только для справки, а не как рекомендацию для использования.

Это конкретное расширение было устарело от версии PHP 5.5. Но, начиная с версии PHP 7.0, это даже не будет работать, поскольку оно было удалено. Начиная с версии PHP 5.5, когда вы используете эти функции, она будет генерировать ошибку E_DEPRECATED.

Именно поэтому кстати, хотя я и рекомендую своим заказчикам в новых проектах использовать последние версии PHP, для старых советую переходить с осторожностью. Обратная совместимость увы, не всегда работает.

Создайте файл mysql.php:

 echo 'Подключились к базе.
'; $result = mysql_query('SELECT id FROM goroda'); $row = mysql_fetch_row($result); echo "id 1: ", $row[0], "
\n"; mysql_close($conn); ?>

В приведенном выше:

    Функция mysql_connect принимает три аргумента:

  1. имя хоста, в котором запущена база данных MySQL;
  2. имя пользователя MySQL для подключения;
  3. пароль для пользователя mysql. Здесь он подключается к базе данных MySQL, которая выполняется на локальном сервере с использованием имени пользователя и его пароля.
Подключились к базе. id 1: 1

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

Автор этого материала — я — Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML — то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.

статьи IT, основы mysql, подключение mysql, mysqli, pdo

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

Соединение с базой данных

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

Данные для подключения

При подключении к базе данных из PHP скриптов на хостинге нужно всегда использовать сервер localhost, при удаленном подключении нужно использовать имя сервера вида *.lite-host.in. Сервер можно посмотреть в письме «Данные нового хостинга».

Письмо «Данные нового хостинга»

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

Имя пользователя и пароль используются те, которые пользователь сам указывает при создании базы данных (подробнее в статье https://lite.host/faq/hosting/sozdanie-bazi-dannih).

Подключение базы данных к сайту

Для работы CMS (систем управления контентом) необходимо в конфигурационных файлах указать данные для подключения к серверу базы данных, без этого сайт работать не будет. Наибольшей популярностью пользуются системы WordPress, Битрикс, OpenCart / ocStore, MODX, Joomla.

WordPress

При установке или переносе сайта на WordPress, чтобы соединиться с базой данных MySQL, необходимо внести изменения в файл /wp-config.php.

Файл «wp-config.php»

Битрикс

Чтобы подключить базу данных к сайту в системе Bitrix, данные прописываются в файлах /bitrix/.settings.php и /bitrix/php_interface/dbconn.php. В них вносится информация о базе (название, пользователь и пароль).

Файл «/bitrix/.settings.php»

Файл «/bitrix/php_interface/dbconn.php»

OpenCart / ocStore

В OpenCart, как и в адаптированной системе ocStore для российского рынка, данные от базы данных прописываются в файлах config.php и admin/config.php.

Файл «admin/config.php»

Файл «config.php»

MODX

В MODX файл с данными для подключения к базе данных находится по пути core/config/config.inc.php.

Файл «core/config/config.inc.php»

Joomla

Для подключения к базе данных в Joomla, заполните файл configuration.php нужными данными.

Файл «conifguration.php»

Удаленное подключение

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

ISPmanager

Модуль «База данных»

«Пользователи базы данных»

«Пользователи базы данных»

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

cPanel

Меню «cPanel»

Модуль «Удаленный MySQL»

С главной страницы переходим в раздел «Удаленный MySQL». В открывшемся окне можно открыть доступ всем пользователям баз данных, указав IP-адреса, с которых будет осуществляться подключение. При использовании символа % (wildcard) доступ будет разрешен с любого IP-адреса.

DirectAdmin

Меню «DirectAdmin»

Модуль «Управление MySQL»

«Просмотр базы данных»

В главном меню выбираем модуль «Управление MySQL», далее в открывшемся окне выбираем базу данных для просмотра данных о ней. В поле хост доступа указываем с какого сервера разрешить подключение. Для доступа с любого IP-адреса укажите символ % (wildcard).

Распространенные проблемы

Ошибка подключения к базе данных в cPanel

Достаточно часто базу данных и пользователя создают не через «Мастер баз данных», а через раздел «Базы данных MySQL», и забывают связать их друг с другом, что приводит к ошибке соединения с базой данных со стороны сайта.

Исправить ее можно путем добавления пользователя к базе данных. С главного меню cPanel заходим в «Базы данных MySQL». В появившемся окне выбираем раздел «Добавить пользователя в базу данных», далее заполняем форму, выбирая нужных пользователя и базу данных, и нажимаем кнопку «Добавить».

Панель «cPanel»

Модуль «Базы данных MySQL»

После того, как пользователь был назначен для базы данных, он появится в таблице «Текущие базы данных». Здесь необходимо назначить ему права. Поэтому кликаем на нужного нам пользователя, и в открывшейся форме выбираем привилегии, можно выбрать «все привилегии», далее нажимаем на кнопку «Внести изменения».

«Текущие базы данных»

«Управление привилегиями пользователя»

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

Запись в базу данных mysql на php через форму

Запись в базу данных mysql на php через форму

Рассмотрим на примере, как создать форму, с помощью которой мы будем делать запросы в базу данных mysql на языке php, используя PDO.

1. Создадим разметку html-формы

  Запись в БД через форму на php   

Форма отправляется методом POST и обрабатывается на текущей странице.

2. Создадим таблицу, в которую будем записывать данные

Можно выполнить через SQL в PhpMyAdmin или ручками.

CREATE TABLE `mytable` ( `id` int(20) NOT NULL PRIMARY KEY AUTO_INCREMENT, `name` varchar(255) CHARACTER SET utf32 NOT NULL, `text` text NOT NULL ) 

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

Подключимся к базе данных.

// Переменные с формы $name = $_POST['name']; $text = $_POST['text']; // Параметры для подключения $db_host = "localhost"; $db_user = "user"; // Логин БД $db_password = "123"; // Пароль БД $db_base = 'mybase'; // Имя БД $db_table = "mytable"; // Имя Таблицы БД try < // Подключение к базе данных $db = new PDO("mysql:host=$db_host;dbname=$db_base", $db_user, $db_password); // Устанавливаем корректную кодировку $db->exec("set names utf8"); > catch (PDOException $e) < // Если есть ошибка соединения, выводим её print "Ошибка!: " . $e->getMessage() . "
"; >

Кодировку установили, чтобы избежать лишних проблем (не обязательно).

Не забудьте заранее создать таблицу в базе данных с трёмя значениями (id, name, text), подробнее об этом читать здесь.

Далее напишем наш запрос для записи в базу данных и запишем его в переменную.

// Собираем данные для запроса $data = array( 'name' => $name, 'text' => $text ); // Подготавливаем SQL-запрос $query = $db->prepare("INSERT INTO $db_table (name, text) values (:name, :text)"); // Выполняем запрос с данными $query->execute($data); 

Здесь мы сначала все наши данные для записи записываем в переменную $data, затем подготавливаем запрос с плейсохледарами (переменные) и выполняем запрос передавая ему данные для заполнения из $data

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

if ($result)

4. Подключение формы к запросу

Форму создали, к базе подключились и написали запрос, теперь нужно связать всё это.

Форма отправляется методом POST, поэтому мы можем сделать проверку на него, а именно на любое поле формы.

У нас передаются поля с именами «name» и «text», на них мы и сделаем проверку.

Вставим весь наш скрипт в эту проверку:

if (isset($_POST['name']) && isset($_POST['text']))< // Переменные с формы $name = $_POST['name']; $text = $_POST['text']; // Параметры для подключения $db_host = "localhost"; $db_user = "user"; // Логин БД $db_password = "123"; // Пароль БД $db_base = 'mybase'; // Имя БД $db_table = "mytable"; // Имя Таблицы БД try < // Подключение к базе данных $db = new PDO("mysql:host=$db_host;dbname=$db_base", $db_user, $db_password); // Устанавливаем корректную кодировку $db->exec("set names utf8"); // Собираем данные для запроса $data = array( 'name' => $name, 'text' => $text ); // Подготавливаем SQL-запрос $query = $db->prepare("INSERT INTO $db_table (name, text) values (:name, :text)"); // Выполняем запрос с данными $query->execute($data); // Запишим в переменую, что запрос отрабтал $result = true; > catch (PDOException $e) < // Если есть ошибка соединения или выполнения запроса, выводим её print "Ошибка!: " . $e->getMessage() . "
"; > if ($result) < echo "Успех. Информация занесена в базу данных"; >>

То есть, если существует значения «name» и «text» переданные методом POST, то выполняется подключение к БД и запись в таблицу.

Работа с MySQL в PHP

PHP поддерживает работу с базой данных MySQL. Специальные встроенные функции для работы с MySQL позволяют просто и эффективно работать с этой СУБД: выполнять любые запросы, читать и записывать данные, обрабатывать ошибки.

Сценарий, который подключается к БД, выполняет запрос и показывает результат, будет состоять всего из нескольких строк. Для работы с MySQL не надо ничего дополнительно устанавливать и настраивать; всё необходимое уже доступно вместе со стандартной поставкой PHP.

Что такое mysqli?

mysqli (MySQL Improved) — это расширение PHP, которое добавляет в язык полную поддержку баз данных MySQL. Это расширение поддерживает множество возможностей современных версий MySQL.

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

Типичный процесс работы с СУБД в 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 и проверка на ошибки:

 else < print("Соединение установлено успешно"); >?> 

Функция 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 , которое будет означать, что запрос выполнить не удалось. Для получения строки с описанием ошибки существует функция mysqli_error($link) .

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

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

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

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

 else < $sql = 'INSERT INTO cities SET name = "Санкт-Петербург"'; $result = mysqli_query($link, $sql); if ($result == false) < print("Произошла ошибка при выполнении запроса"); >else < $city_id = mysqli_insert_id($link); $sql = 'INSERT INTO weather_log SET city_id = ' . $city_id . ', day = "2017-09-03", temperature = 10, cloud = 1'; $result = mysqli_query($link, $sql); if ($result == false) < print("Произошла ошибка при выполнении запроса"); >> > 

Чтение записей

Другая частая операция при работе с базами данных в PHP — это получение записей из таблиц (запросы типа SELECT). Составим SQL-запрос, который будет использовать SELECT выражение. Затем выполним этот запрос с помощью функции mysqli_query() , чтобы получить данные из таблицы.

В этом примере показано, как вывести все существующие города из таблицы cities :

В примере выше результат выполнения функции mysqli_query() сохранён в переменной $result . В этой переменной находятся не данные из таблицы, а специальный тип данных — так называемая ссылка на результаты запроса.

Чтобы получить действительные данные, то есть записи из таблицы, следует использовать другую функцию — mysqli_fetch_array() — и передать ей единственным параметром эту самую ссылку. Теперь каждый вызов функции mysqli_fetch_array() будет возвращать следующую запись из всего результирующего набора записей в виде ассоциативного массива.

Цикл while здесь используется для «прохода» по всем записям из полученного набора записей. Значение поля каждой записи можно узнать просто обратившись по ключу этого ассоциативного массива.

Как получить сразу все записи в виде двумерного массива

Иногда бывает удобно после запроса на чтение не вызывать в цикле mysqli_fetch_array для извлечения очередной записи по порядку, а получить их сразу все одним вызовом. PHP так тоже умеет.

Функция mysqli_fetch_all($res, MYSQLI_ASSOC) вернёт двумерный массив со всеми записями из результата последнего запроса. Перепишем пример с показом существующих городов с её использованием:

Как узнать количество записей

Часто бывает необходимо узнать, сколько всего записей вернёт выполненный SQL-запрос. Это может помочь при организации постраничной навигации или просто в качестве информации. Узнать число записей поможет функция mysqli_num_rows() , которой следует передать ссылку на результат запроса.

«Доктайп» — журнал о фронтенде. Читайте, слушайте и учитесь с нами.

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

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