Как сделать подключение к бд в php

Добавил пользователь Валентин П.
Обновлено: 05.10.2024

PHP 5 и более поздние версии могут работать с базой данных MySQL, используя:

  • Расширение MySQLi ("i" означает улучшенный)
  • PDO (объекты данных PHP)

Разница между MySQLi и PDO

  • PDO работает с 12 различными системами баз данных, тогда как MySQLi работает только с базами данных MySQL.
  • И PDO, и MySQLi объектно-ориентированы, но MySQLi также предлагает процедурный API.
  • Если в какой-то момент разработки вы захотите изменить базу данных, тогда это будет проще сделать в PDO, чем в MySQLi, поскольку PDO поддерживает 12 различных систем баз данных. Вам нужно будет только изменить строку подключения и несколько запросов. С MySQLi вам нужно будет переписать весь код, включая запросы.
  • Оба поддерживают подготовленные заявления. Подготовленные операторы защищают от внедрения SQL и очень важны для безопасности веб-приложений.

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

  • MySQLi (объектно-ориентированный)
  • MySQLi (процедурный)
  • PDO

Установка MySQLi

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

Для получения информации об установке перейдите по адресу.

Установка PDO

Для получения информации об установке перейдите по адресу.

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

Перед тем как мы начнём выполнять какие-либо операции с записями с базой данных MySQL, необходимо к ней подключиться. Сделать это можно несколькими способами:

Использование объектно-ориентированной процедуры MySQLi: мы можем использовать объектно-ориентированный метод MySQLi для установления соединения с базой данных MySQL из сценария PHP.

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

Объяснение примера: В данном случае, мы создаем экземпляр класса mysqli , предоставив все необходимые данные, необходимые для установления соединения, такие как хост, имя пользователя, пароль и т.д. Если экземпляр создан успешно, соединение будет успешным, в противном случае возникнет ошибка при установлении соединения.

Примечание: $ connect_error не работал до PHP 5.2.9 и 5.3.0. Если вам необходимо обеспечить совместимость с версиями PHP до 5.2.9 и 5.3.0, используйте вместо этого следующий код:

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

Пример (процедура MySQLi)

Объяснение примера: В процедурном подходе MySQLi вместо создания экземпляра мы можем использовать функцию mysqli_connect() , доступную в PHP, для установления соединения. Эта функция принимает информацию в виде аргументов, таких как хост, имя пользователя, пароль, имя базы данных и т.д. Эта функция возвращает идентификатор ссылки MySQL при успешном соединении или FALSE, если соединение не удалось установить.

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

Пример (PDO)

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

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

Закрытие соединения

Когда мы устанавливаем соединение с базой данных MySQL из сценария PHP, мы также должны по завершению работы отключать или закрывать соединение с БД. Соединение с базой данных MySQL будет закрыто автоматически по завершении скрипта. Чтобы закрыть соединение раньше, используйте следующее (мы предположили, что ссылка на соединение хранится в переменной $conn):

Без соединения с базой данных (БД) сегодня не работает практически ни один сайт. поэтому и мы рассмотрим как соединяться с MySQL при помощи php.

Создание соединения разными способами:

1) старый дедовский способ подключения к MySQL:

$conn=mysql_connect($db_hostname, $db_username, $db_password) or die ("Нет подключения к серверу");
mysql_select_db($db_database,$conn) or die ("Нет удалось соединиться с БД");

- пояснения к переменным ниже.

При этом используются функции:

  • mysql_connect() - для подключения к серверу;
  • mysql_select_db() - для подключения к БД;

При этом постоянно проверяем на наличие ошибки таким способом: or die ("Ошибка такая то"); - переводится как или умри с такой-то ошибкой - чтобы сразу найти где ошибка.

Пример соединения с БД на php с выборкой из таблицы

config.php

// переменные для соединения с БД
$host = 'localhost'; / хост
$username = 'root'; // пароль для подключения к БД
$password = ''; // пароль для подлючения к базе данных - на локальном компьютере он может иметь пустое значение.
$database_name = 'my-dolgi'; // имя БД

// старый способ соедения с БД
mysql_connect($host, $username, $password) or die("Не могу соединиться создать соединение");

// выбрать БД. Если ошибка - вывести
mysql_select_db($database_name) or die(mysql_error());

index.php

// Выполнить запрос. Если ошибка - выводим
$result = mysql_query('SELECT Name, Money FROM Dolg ORDER BY Money DESC LIMIT 5') or die(mysql_error());

echo "Кому я должен по убыванию:

// Выборка результатов запроса
while ( $row = mysql_fetch_assoc($result) ) echo $row['Name'] . " с долгом " . $row['Money'] . " рублей.
";
>

// освобождение используемой памяти
mysql_free_result($result);

// Закрываем соединение
mysql_close();

2) Более прогрессивный процедурный стиль - соединение с БД при помощи mysqli:

  1. удобнее;
  2. быстрее до 40 раз;
  3. повышена безопасность;
  4. есть новые возможности и функции;

Пример соединения с БД на php с выборкой из таблицы

config.php


// соедения с БД
$link = mysqli_connect('localhost', 'username', 'password', 'name-database'); // тут вводим прям данные ваши: имя юзера, пароль и имя БД, первое поле обычно localhost

// вывод ошибки соединения
if (!$link) echo "Ошибка подключения к БД. Код ошибки: " . mysqli_connect_error();
exit;
>

. Обратите внимание - везде используется mysqli , а не mysql .

index.php

// Выполнить запрос. Если ошибка - выводим
if ($result = mysqli_query($link, 'SELECT Name, Money FROM Dolg ORDER BY Money DESC LIMIT 5'))

echo "Кому я должен по убыванию:

// Выборка результатов запроса
while ( $row = mysqli_fetch_assoc($result) ) echo $row['Name'] . " с долгом " . $row['Money'] . " рублей.
";
>

// освобождение используемой памяти
mysqli_free_result($result);

Как видим, некоторые моменты поменялись (выделены курсивом).

3) Объектно-ориентированный метод подключения к бд MySQL - с помощью методов и классов:

Минусы: сложнее и менее восприимчив к ошибкам.

Плюсы: краткость и удобство для программистов с опытом.

$conn = new mysqli($db_hostname, $db_username, $db_password, $db_database);
if($conn->connect_errno) die($conn->connect_error);
> else

тут в принципе все интуитивно понятно:

  • $db_hostname - это хост (в основном localhost),
  • $db_database - имя БД;
  • $db_username и $db_password - имя пользователя и пароль соответственно!

Пример соединения с БД на php стиль ООП с выборкой из таблицы

config.php


// соедения с БД
$mysqli = new mysqli ('localhost', 'username', 'password', 'name-database'); // тут вводим прям данные ваши: имя юзера, пароль и имя БД, первое поле обычно localhost

// вывод ошибки соединения
if ($mysqli->connect_error) die ('Ошибка подключения к БД: ( ' . $mysqli->connect_errno . ') ' . mysqli_connect_error ) ;
>

. Обратите внимание - везде используется mysqli , а не mysql . и в отличие от предыдущего метода появляются стрелочки "->", которые показывают, что это стиль ООП.

index.php

// Выполнить запрос. Если ошибка - выводим
if ($result = $mysqli->query('SELECT Name, Money FROM Dolg ORDER BY Money DESC LIMIT 5'))

echo "Кому я должен по убыванию:

// Выборка результатов запроса
while ( $row = $result->fetch_assoc() ) echo $row['Name'] . " с долгом " . $row['Money'] . " рублей.
";
>

// освобождение используемой памяти
$result->close();

Задание вам такое - найти отличия.

4) Связь с БД при помощи PDO :

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

config файл от предыдущего метода! - такой же

index.php

// PDO стиль для связи с MySQL
if ($stmt = $mysqli->prepare("SELECT Name, Voney FROM Dolg ORDER BY Money bind_param("i", $summa);
$summa = 100000;

//запускаем выполнение
$stmt->execute();

// Объявление переменных для заготовленных значений
$stmt->bind_result($col1, $col2);

echo "Кому я должен по убыванию:

// Выборка результатов запроса
while ( $stmt->fetch() ) echo $col1 . " с долгом " . $col2 . " рублей.
";
>

// освобождение используемой памяти
$stmt->close();

// Закрываем соединение
$mysqli->close();

Как видим, тут намного сложнее и надо изучать PDO - это отдельная тема.

Более новые статьи:

  • Функция trim в php часто используется, потому что она очень удобна. давайте смотреть как она работает. …

Более старые статьи:

На PHP часто нужна загрузка файлов на сервер. приятно же, если у вашего сайта есть возможность загружать файлы на сайт: картинки или другие текстовые …

PHP: работа с БД MySQL

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

Их используют для:

  1. Регистрации и авторизации на сайте (хранят регистрационные данные).
  2. Хранения статей и комментариев к ним.
  3. Организации поиска по веб-сайту.

В этой статье мы научимся вставлять, изменять, получать и защищать данные из БД MySQL, используя PHP.

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

Основная разница в том, что PDO может работать с огромным количеством баз данных: MySQL, Cubrid, Oracle, SQlite и так далее. А mysqli может работать только с MySQL.

В своей статье я покажу, как работать с PDO.

Примеры показывать буду на локальном сервере ( xampp ).

Создание БД и таблиц

Создать БД можно из панели управления хостингом, если есть такая возможность, а если нет, то из phpMyAdmin. Сравнение ставим utf8_general_ci.

Заходим в БД и создадим таблицу users , которую будем использовать для примера. Она будет включать колонки: ID(int) , login(varchar) и pass(varchar) . ID будет первичным ключом, а также будет иметь галочку напротив AI(auto increment), что позволит каждой новой записи присваивать id на 1 больше, чем у прошлой записи. Кроме этого, не забываем проставить длину varchar ’ам и поставить сравнение utf8_general_ci к полям login и pass .

База данных

Теперь мы имеем готовую БД и таблицу для работы с ней.

Подключение к БД с помощью PHP

Создаём файл index.php и прописываем:

Мы создали подключение к БД. Подключение от PDO не нужно закрывать, оно само закрывается, когда скрипт завершает свою работу.

Выборка данных

Здесь я сделаю небольшое отступление. Выбирать данные можно:

PDO::FETCH_ASSOC — возвращает массив с названиями столбцов в виде ключей.

PDO::FETCH_OBJ — возвращает анонимный объект со свойствами, соответствующими именам столбцов.

Fetch() — каждый раз извлекает следующую строку.

Продолжаем скрипт:

Здесь мы обращаемся к массиву $row по индексу login.

В данном случае код выведет логин всех, кто есть в таблице.

Здесь мы обращаемся к объекту $row по login.

В данном случае код выведет также логин всех, кто есть в таблице.

Выборка данных по параметру + защита

Мы можем выбирать определённые данные из таблицы. Например, мы можем выбрать все записи, где pass = 123, и тому подобные.

Вот первый пример выборки по логину + защита:

Можно указать несколько вопросительных знаков, а в execute перечислить замены для них через запятую.

Вот второй пример выборки по логину + защита:

Можно указать несколько ключей, а в execute перечислить замены для них через запятую в формате ‘ключ’ => значение .

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

Вставка данных по параметру + защита

Теперь можем проверить таблицу. Видим, что всё сработало правильно.

Обновление данных по параметру + защита

Теперь можем проверить таблицу. Видим, что всё сработало правильно.

Заключение

Как видите, работать с PDO довольно легко. Теперь вы сами можете создавать веб-сайты с базами данных.

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

Вопрос достаточно популярный среди новичков и не уделить этому отдельную статью было бы неправильно. Как с помощью PHP создать подключение к базе данных? Скажу сразу, средств PHP вполне достаточно для полноценной работы с базами и взаимодействию с MySQL. Теперь попытаемся подключиться!

Что нужно для подключения PHP к MySQL?

1. Установленный СУБД и созданная рабочая база данных. Например, в MySQL ( Что такое СУБД и MySQL? ).
2. Учётная запись пользователя для MySQL с соответствующими правами ( Что такое права и привилегии в MySQL? )
3. Соответственно сервер с установленным PHP

Если не выполнить один из этих пунктов, то подключиться не получится.

Если Вы работаете уже на хостинге или на специальной сборке сервера (Denwer, XAMPP и тд), то и PHP, и MySQL у Вас скорее всего уже установлены.

Алгоритм взаимодействия PHP и MySQL

1. Подключение к БД
2. Отправка запроса и получение результата
3. (Желательно) Закрытие подключения

Теперь подключаемся к базе данных средствами PHP:

Код PHP


Как Вы видите, для подключения указываются четыре параметра:

1. Имя хоста. Во многих случаях достаточно указать localhost (на этом же хостинге).
2. Имя пользователя, которого Вы зарегистрировали для использования MySQL.
3. Пароль пользователя, которого Вы зарегистрировали для использования MySQL.
4. Название Базы Данных, к которой хотим подключиться. Соответственно у пользователя, которого мы указали, должны быть права для работы в этой БД.

В результате, если что-то указано неверно, то ничего криминального не произойдёт, а скорее всего Вы увидите ошибку. Но будем оптимистами, допустим Вы ввели всё верно.

Ещё один вид подключения:

Код PHP


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

Как прервать (закрыть) подключение к БД в PHP?

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

Код PHP


Очень важно также то, что проработка сценария прекратится, что убережёт Вас от массы некорректных данных.

Поздравляю! Теперь Вы знаете как подключиться к БД в PHP и закрыть соединение!

Читайте также: