Как подключиться к бд mysql php
Перейти к содержимому

Как подключиться к бд mysql php

  • автор:

Подключение к базе данных в PHP через mysql, pdo и mysqli

Прежде чем подключиться к MySQL серверу необходимо определиться с PHP расширением, которое будет использоваться для работы с базой данных. Под расширением понимается драйвер — посредник между сервером базы и программистом. Он содержит набор функций или объектов, которые упрощают работу программиста. На данный момент выделяют 3 основных расширения.

Все 3 расширения являются стандартным набором для любой хорошей хостинг-площадки. Однако, по умолчанию некоторые могут быть отключены в настройках PHP модулей. Информацию о включенных модулях возвращает функция «phpinfo» с параметром «8».

phpinfo(8);

Доступность модуля можно определить с помощью простой конструкции в коде.

if (extension_loaded('mysql')) echo ' mysql доступен '; if (extension_loaded('mysqli')) echo ' mysqli доступен '; if (extension_loaded('PDO')) echo ' pdo доступен ';

Подключение к 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

Отличие 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;

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

Подключение к базе через PDO

PDO — расширение для PHP, которое расшифровывается как PHP Data Objects. Его особенностью является повышенная безопасность и универсальный интерфейс работы с различными базами данных. Другими словами, если с помощью MySQLi можно создавать запросы только для MySQL сервера, то PDO позволяет работать с различными серверами используя один и тот же синтаксис запросов. Это удобно если разработчик заранее не знает под управлением какого сервера будет работать конечный продукт.

pdo

У PDO есть свой механизм соединения с базой данных — «DSN» (Data Source Name). Кроме адреса сервера, логина и пароля, он должен принять тип базы данных. Посмотрим пример подключения.

$dsn = "mysql:host=$db_server;dbname=$db_name;charset=utf8"; // Параметры задают что в качестве ответа получаем ассоциативный массив $opt = array( PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC ); // Проверка корректности подключения try < $pdo = new PDO($dsn, $db_user, $db_password, $opt); >catch (PDOException $e) < die('Подключение не удалось: ' . $e->getMessage()); > // Формируем запрос $sql = 'SELECT * FROM `Real_Polls`'; $result = $pdo->query($sql); // Перебор и вывод результатов while ($row = $result->fetch()) < echo $row['p_poll'] . "\n"; >// Закрываем соединение $pdo = NULL;

Точно так же осуществляются и другие действия с записями и таблицами. Только меняем SQL запрос и вызываем выполнение методом «exec».

$sql = 'UPDATE `books` SET `BPrice` = "99" WHERE `BId`=1'; $result = $pdo->exec($sql);

Метод «exec» в отличии от «query» не может получать данные из базы данных. Он возвращает количество записей, которые были затронуты в результате работы SQL запроса.

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

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

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

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

  • Подключение с помощью расширения Mysqli (рекомендуется)
  • Подключение с помощью PDO (рекомендуется)
  • Подключение с помощью традиционных функций устаревших mysql_ (устар)

Для этого необходимо установить пакет PHP-MySQL.

На основе дистрибутива RedHat включая CentOS, использовать yum для установки PHP-MySQL, как показано ниже.

yum install php-mysql

В зависимости от вашей системы, выше будем устанавливать или обновлять следующие зависимости:

После того, как все установлено, страница phpinfo будет отображать MySQL модуль, как показано ниже:

Расширение PHP и MySQL

Для всех приведенных ниже примеров, мы будем подключаться к базе данных MySQL, которая уже существует. Если вы новичок в MySQL, это хорошее место, чтобы начать: MySQL — Руководство для начинающих.

Примечание: Все, что описано здесь также будет работать с MariaDB, как это работает на MySQL.

1. Подключение на PHP с использованием расширения Mysqli

MySQLi означает MySQL Improved.

Обратите внимание, что в большинстве дистрибутивов (например: CentOS), PHP-MySQLi уже является частью пакета PHP-MySQL. Таким образом, вам не придется искать и устанавливать пакет PHP-MySQLi. Все, что вам нужно сделать, это установить пакет PHP-MySQL, чтобы получить работающее расширение Mysqli на вашей системе.

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

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

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

  • MySQLi — Эта функция будет инициировать новое соединение, используя расширение Mysqli. Эта функция будет принимать четыре аргумента:
    1. Имя хоста, где база данных MySQL работает
    2. Имя пользователя для подключения MySQL
    3. Пароль для пользователя mysql
    4. База данных MySQL для подключения.
  • Функция запроса — Используйте ее, чтобы указать ваш запрос MySQL. В этом примере, мы выбираем столбец имени из базы данных employee.
  • Наконец, мы отображаем количество строк, выбранных с помощью переменной num_rows. Мы также закрываем соединение, как показаны выше.

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

Подключение к базе данных. Количество строк: 4

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

2. Подключение при помощи PHP к MySQL с расширением PDO

PDO означает PHP Data Objects.

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

В большинстве дистрибутивов Linux (например, CentOS и RedHat), PHP-PDO пакет уже входит в пакет PHP-MySQL. Таким образом, вам не придется искать и устанавливать пакет PHP-PDO. Все, что вам нужно сделать, это установить пакет PHP-MySQL, чтобы получить работающее расширение PDO_MYSQL PHP в вашей системе.

Создайте следующий файл MySQL-pdo.php в вашим Apache DocumentRoot:

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

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

  • новый PDO — Создаст новый объект PDO, который будет принимать следующие три аргумента:
    1. Строка подключения MySQL: будет в формате “mysql:host=$hostname;dbname=$dbname”. В приведенном выше примере, БД работает на локальном хосте, и мы подключаемся к базе данных andreyex.
    2. Имя пользователя для подключения к MySQL.
    3. Пароль для пользователя mysql.
  • $sql variable — создание запроса SQL, который вы хотите выполнить. В этом примере, мы выбираем столбец name из таблицы employee.
  • query($sql) — здесь мы выполняем SQL запрос, который мы только что создали.
  • foreach — вот здесь мы пробегаем по вышеуказанным командам и сохраняем их в переменной строке $, а затем мы показываем их с помощью команды печати.
  • В MySQL PDO, чтобы закрыть соединение, просто обнулите значение переменной $conn.

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

Подключение к базе данных. Имя Сотрудника: AndreyEx Ruslan Maria Oleg

3. Подключение на PHP с использованием функций mysql_ (устар)

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

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

Это устаревшее расширение PHP 5.5 версии. Но начиная с PHP 7.0 версии, это не будет работать, так как она была удалена.

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

Создайте следующий файл MySQL-legacy.php под Apache DocumentRoot:

 echo 'Подключение к базе данных.
'; $result = mysql_query('SELECT name FROM employee'); $row = mysql_fetch_row($result); echo "Сотрудник 1: ", $row[0], "
\n"; mysql_close($conn); ?>

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

  • Функция mysql_connect принимает три аргумента: 1) имя хоста, где база данных MySQL работает, 2) Имя пользователя для подключения к MySQL, 3) Пароль для пользователя MySQL. Здесь подключаемся к базе данных MySQL, которая выполняется на локальном сервере, используя имя пользователя root и его пароль.
  • Функция mysql_select_db — Как следует из названия, будет выбирать базу данных, к которой вы хотите подключиться. Это эквивалентно команде «use». В этом примере мы подключаемся к базе данных andreyex.
  • Функция mysql_query — Используйте ее, чтобы указать ваш запрос MySQL. В этом примере, мы выбираем столбец name из базы данных employee.
  • mysql_fetch_row — используйте эту функцию для извлечения строк из запроса SQL, который мы только что создали.
  • Наконец закрыть соединение с помощью команды mysql_close, как показано выше.

При вызове MySQL-legacy.php из вашего браузера, вы увидите следующий вывод, что свидетельствует о том, что PHP был в состоянии подключиться к базе данных MySQL и сделать выборку данных.

Подключение к базе данных. Сотрудник 1: AndreyEx

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

PHP MySQL. Подключение к базе данных MySQL

PHP MySQL

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

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

  • Имя источника данных MySQL или DSN: указывает адрес сервера базы данных MySQL. Вы можете использовать IP-адрес или имя сервера, например, 127.0.0.1 или localhost
  • Имя базы данных MySQL: указывает имя базы данных, к которой вы хотите подключиться.
  • Имя пользователя и пароль: укажите имя пользователя и пароль пользователя MySQL, который вы используете для подключения к серверу базы данных MySQL. Учетная запись должна иметь достаточные привилегии для доступа к базе данных, указанной выше.

Мы будем использовать:

  • Локальный сервер базы данных MySQL, так что DSN есть localhost.
  • Classicmodels в качестве образца базы данных.
  • root с пустым паролем, только ради демонстрации.

Подключение к MySQL

Во-первых, чтобы сделать это удобным, мы создадим новый файл PHP для конфигурации базы данных с именем dbconfig.php, который содержит все настроенные параметры:

Во-вторых, мы создаем новый файл PHP с именем phpmysqlconnect.php:

 catch (PDOException $pe) < die("Could not connect to the database $dbname :" . $pe->getMessage()); >

Как работает скрипт

  • Мы включили файл dbconfig.php в скрипт, используя функцию require_once.
  • Внутри блока try мы создали новый объект PDO с тремя аргументами: строка подключения, имя пользователя и пароль. Строка подключения состоит из переменных $host и $dbname в файле dbconfig.php.
  • Если соединение с базой данных MySQL установлено успешно, мы отобразили сообщение об успехе. Если были какие-либо ошибки или исключения, PHP выдал исключение PDOException который содержит подробное сообщение об ошибке. Мы вызываем метод getMesage() объекта PDOException, чтобы получить подробное сообщение для отображения.

В-третьих, давайте протестируем скрипт из веб-браузера.

PHP MySQL. Подключение к базе данных MySQL

Работает как положено. Мы успешно подключились к серверу MySQL.

Давайте попробуем что-то изменить в коде, чтобы скрипт отображал сообщение об ошибке. Если вы установите пустую переменную $username, вы получите следующее сообщение об ошибке:

PHP MySQL. Подключение к базе данных MySQL

Сообщение об ошибке показывает, что:

Access denied for user ''@'localhost' to database 'classicmodels'

потому что у нас нет пустого пользователя в базе данных classicmodels.

Когда скрипт заканчивается, PHP автоматически закрывает соединение с сервером базы данных MySQL. Если вы хотите явно закрыть соединение с базой данных, вам нужно установить объект PDO null следующим образом:

$conn = null;

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Как подключится к БД?

FanatPHP

Почему-то все поголовно новички задают не тот вопрос, который им нужно решить.
Вопрос же не в том «Как подключиться», а «почему у меня не работает?». А это совсем другой вопрос.

$host = 'booktst.beget.tech'; $db = ''; $user = ''; $pass = ''; $charset = 'utf8mb4'; mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); try < $mysqli = mysqli_connect($host, $user, $pass, $db); mysqli_set_charset($mysqli, $charset); >catch (\mysqli_sql_exception $e) < throw new \mysqli_sql_exception($e->getMessage(), $e->getCode()); > unset($host, $db, $user, $pass, $charset); // we don't need them anymore
  • пропадут все проблемы связанные с кодировками (сохранятся вопросы вместо русских букв, не работает json_encode(). )
  • пропадут бесполезные сообщения об ошибках как mysqli_fetch_assoc() expects parameter. место них будет выдаваться нормальное объяснение прочему запрос упал
  • сайт не будет позориться светя ошибками на весь интернет если упала база данных

Ответ написан более трёх лет назад
Нравится 3 12 комментариев
lookingfor2 @lookingfor2 Автор вопроса

Дико извиняюсь, я правильно понял, что db имя базы данных, user это пользователь которому разрешили доступ к базе данных, пароль так же при разрешении пользователю указывали ?

FanatPHP

Это те же самые переменные что и у тебя, только с другими названиями. Я оставил эти навазния потому что копировал с готовгого примера.
А так да — db имя базы данных, user это пользователь которому разрешили доступ к базе данных, пароль так же

bedolazhka @bedolazhka
у некоторых перевернётся мир, когда они увидят это и охота к php пропадёт, полегче)
lookingfor2 @lookingfor2 Автор вопроса

5dd2c5e1a21c7385950173.jpeg

bedolazhka, ))))
просто тут при добавлении доступов указывается домен или ip , я указал свой ip

все в переменные записал и в итоге 500 ошибка

FanatPHP

«свой» — это чей?
bedolazhka @bedolazhka

lookingfor2, так Вы удалённо доступ получаете к БД? ЕМНИП там галочку нужно поставить для удалёнки давно бегетом не пользовался, но удалёнка на платном вроде тарифе только.

lookingfor2 @lookingfor2 Автор вопроса

FanatPHP

как я писул уже, сюда пишется ip сервера на котором расположены пхп скрипты. Чаще всего это 127.0.0.1

lookingfor2 @lookingfor2 Автор вопроса

FanatPHP,
в бегете написано
Параметры для подключения
Сервер для подключения сайтов:
localhost

Сервер для внешних подключений:
booktst.beget.tech

Имя пользователя:
Совпадает с именем БД

FanatPHP

так тебе откуда надо подключаться — из дома или с сайта?
Подключение с сайта работает?
lookingfor2 @lookingfor2 Автор вопроса
FanatPHP, по хорошему нужно бы научится по всякому
Это я так понимаю с сайта подключение

FanatPHP

если с сайта, то в коде соединения надо писать не booktst.beget.tech а localhost или 127.0.0.1
Ответы на вопрос 1

Rsa97

Для правильного вопроса надо знать половину ответа

И что вы не поняли в тексте ошибки? Пользователю booktst запрещён доступ на сервер m2.spirit.beget.com с использованием указанного им пароля.
Все вопросы к тому, кто поднимал сервер MySQL, заводил там пользователя и назначал ему права.

Ответ написан более трёх лет назад
Нравится 4 2 комментария
lookingfor2 @lookingfor2 Автор вопроса

$host = ‘127.0.0.1’;
$db = ‘test’;
$user = ‘root’;
$pass = »;
$charset = ‘utf8mb4’;

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
try $mysqli = new mysqli($host, $user, $pass, $db);
$mysqli->set_charset($charset);
> catch (\mysqli_sql_exception $e) throw new \mysqli_sql_exception($e->getMessage(), $e->getCode());
>
unset($host, $db, $user, $pass, $charset); // we don’t need them anymore

5dd2c4d57c8bb578574800.jpeg

Эти два пункта определяются когда тут доступы создаем ?

$user — пользователь базы данных
$pass — пароль базы данных

FanatPHP

lookingfor2, да здесь
с хостом надо внимательнее — в него пишется не хост на котором расположена база данных, а хост, с которого к ней обращаются. Хотя если это один и тот же сервер, то без разницы.
я только не понимаю, где здесь поле для пользователя. или оно просто совпадает с именем БД?

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

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