Подключение базы данных MySQL в PHP
Прежде чем выполнять какие-либо операции с записями в БД, необходимо к ней подключиться. Сделать это можно несколькими способами:
- используя объектно-ориентированный подход MySQLi;
- процедурный подход MySQLi;
- технология PDO;
- для старых версий PHP (до PHP 5) MySQL.
Все эти средства позволяют выполнить одну и ту же задачу. Выбор одного из них определяется условиями текущей разработки, версией PHP и личными предпочтениями.
В любом случае, какой бы мы не применяли метод, необходимо иметь основную информацию о БД и доступах к ней:
- сервер, на котором размещена БД. Если вы разрабатываете проект на локальном сервере (а также в большинстве случаев, пользуясь хостингом), указываем значение localhost;
- логин и пароль пользователя с доступом нужной БД (если работа ведется на локальном сервере, пользователь может быть root с пустым паролем);
- имя БД, с которой планируется выполнять операции.
В итоге имеем набор заданных переменных для каждого из примеров ниже:
$db_host = "localhost"; // сервер $db_user = "root"; // имя пользователя $db_pass = ""; // пароль $db_name = "my_db"; // название базы данных
Объектно-ориентированный метод 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. В последствии, вам не придется изменять много имеющегося кода в связи такими обновлениями.
Ошибки кодировки в результатах примеров
Задачей данной статьи было описание подключений к БД средствами PHP. Чтобы не добавлять лишние строки кода, в примерах используется только код, относящийся к теме. Поэтому если, вы копируете пример и в результате видите непонятные символы вместо сообщений об ошибках подключения кириллицей, стоит указать кодировку. Добавьте в начало кода строку:
header("Content-Type: text/html; charset=utf-8");
Тестовое подключение к MySQL из PHP mysqli
Иногда необходимо протестировать работу базы данных, если не удается настроить подключение через сайт или CMS, для этого можно использовать простой PHP скрипт с расширением mysqli.
Скрипт достаточно загрузить в папку вашего сайта и подставить свои значения в файле вместо USER, PASSWORD, BASENAME.
Данный фрагмент кода поможет проверить подключение к базе данных. А также может служить основой для работы с базой данных и выполнения SQL запросов.
$mysqli = new mysqli('localhost', 'USER', 'PASSWORD', 'BASENAME'); if ($mysqli->connect_error) { die('Ошибка подключения (' . $mysqli->connect_errno . ') ' . $mysqli->connect_error); } echo 'Соединение установлено. '
. $mysqli->host_info . ""; $result = $mysqli->query("SHOW TABLES;"); while ($row = $result->fetch_row()) { echo "Таблица: "
; } echo 'Версия MYSQL сервера: ' . $mysqli->server_info . "\n"; $mysqli->close(); ?>
Пригодился скрипт для тестирования хостинга Namecheap.
Подключение к базе данных php на хостинге beget
Я только начинаю знакомится с базой данных и хочу вывести данные из таблицы, но ничего не выводится. Помогите пожалуйста
$host = "localhost"; $dbname= "susamo9a_gg"; $dbuser= "test1"; $dbpasswd = "пароль бд"; $induction = mysql_connect($host,$dbname,$dbpasswd,$dbuser); if($induction == false) < echo 'Okey'; >$sql = "SELECT * FROM `test1`"; $result = mysql_query($induction, $sql); $food = mysqli_fetch_assoc($result); print_r($food)
Отслеживать
задан 12 янв в 18:16
Kirill2007 Kirill2007
11 2 2 бронзовых знака
У вас в коде указаны неправильные данные для подсоединения к базе. Правильные надо смотреть в панели управления хостингом.
12 янв в 18:47
Вы подключаетесь к БД откуда? Внешнее подключение?
13 янв в 6:20
Использование mysql_ и mysqli_ функций одновременно — ведет к ошибкам. К тому же mysql_ -функции давно удалены, если конечно ты не на 5-й версии php. Так что начинать надо с дебага, соответственно — ru.stackoverflow.com/questions/701142/….
Как создать подключение к базе данных в PHP?
Вопрос достаточно популярный среди новичков и не уделить этому отдельную статью было бы неправильно. Как с помощью PHP создать подключение к базе данных? Скажу сразу, средств PHP вполне достаточно для полноценной работы с базами и взаимодействию с MySQL. Теперь попытаемся подключиться!
Что нужно для подключения PHP к MySQL?
1. Установленный СУБД и созданная рабочая база данных. Например, в MySQL ( Что такое СУБД и MySQL? ).
2. Учётная запись пользователя для MySQL с соответствующими правами ( Что такое права и привилегии в MySQL? )
3. Соответственно сервер с установленным PHP
Если не выполнить один из этих пунктов, то подключиться не получится.
| Если Вы работаете уже на хостинге или на специальной сборке сервера (Denwer, XAMPP и тд), то и PHP, и MySQL у Вас скорее всего уже установлены. |
Алгоритм взаимодействия PHP и MySQL
1. Подключение к БД
2. Отправка запроса и получение результата
3. (Желательно) Закрытие подключения
Теперь подключаемся к базе данных средствами PHP:
Код PHP
$db = mysql_connect("localhost", "Admin", "pass"); // данные пользователя
mysql_select_db ("baseName",$db); // выбираем к какой БД подключаемся
?>
Как Вы видите, для подключения указываются четыре параметра:
1. Имя хоста. Во многих случаях достаточно указать localhost (на этом же хостинге).
2. Имя пользователя, которого Вы зарегистрировали для использования MySQL.
3. Пароль пользователя, которого Вы зарегистрировали для использования MySQL.
4. Название Базы Данных, к которой хотим подключиться. Соответственно у пользователя, которого мы указали, должны быть права для работы в этой БД.
В результате, если что-то указано неверно, то ничего криминального не произойдёт, а скорее всего Вы увидите ошибку. Но будем оптимистами, допустим Вы ввели всё верно.
Ещё один вид подключения:
Код PHP
$host="localhost"; /*хост*/
$user="admin"; /*Имя пользователя*/
$password="12345"; /*Пароль пользователя*/
$db="baseName"; /*Название базы данных*/
mysql_connect($host, $user, $password); /*Подключение к серверу*/
mysql_select_db($db); /*Подключение к базе данных на сервере*/
?>
Тут я наглядно создаю переменные с примером данных по пользователю и хосту, а потом создаём подключение.
Как прервать (закрыть) подключение к БД в PHP?
Бывают случаи, когда данные для подключения указываются некорректно. В этом случае скрипт продолжает проработку файла PHP и выдаёт определённое количество ошибок и предупреждений на странице. Для этих случаев предлагаю использовать обработчик ошибок при подключении к БД. В случае неудачного подключения Вам будет выведено предупреждение, которое подскажет на каком этапе проблема:
Код PHP
$user="admin";
$password="12345";
$db="baseName";
// если произошла ошибка
mysql_connect($host, $user, $password) or die("MySQL сервер недоступен!".mysql_error());
mysql_select_db($db) or die("Нет соединения с БД".mysql_error());
?>
Очень важно также то, что проработка сценария прекратится, что убережёт Вас от массы некорректных данных.
Поздравляю! Теперь Вы знаете как подключиться к БД в PHP и закрыть соединение!
