Php не подключается к mysql. Создание соединения с БД MySQL разными способами. Более прогрессивный процедурный стиль - соединение с БД при помощи mysqli

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

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

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

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

Алгоритм взаимодействия 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 и закрыть соединение!

Спасибо за внимание!

В этой статье сегодня поговорим о создании подключения к базе данных и обсудим какой вариант лучше использовать процедурный или объектно - ориентированный. Для начала давайте разберем на каком уровне мы находимся, если это уровень полного новичка, тогда мой совет без исключения начать использовать процедурный стиль подключения к базе данных. Ранее я писал статью по этой теме на своем блоге, подробнее о процедурном стиле подключения к базе данный читайте в статье: «Как подключиться к MySQL используя PHP» . Если за плечами есть уже какой нибудь опыт работы с процедурным стилем подключения к базе данных, тогда Вас наверное как и меня мои проекты просто взяли и заставили использовать объектно - ориентированный подход.

Так или иначе мы сейчас разберем этапы построения класса для создания подключения к базе данных MySQL на языке PHP. Нам понадобиться два PHP файла, в один файл мы «положим» класс для создания подключения к базе данных, а во - втором будем работать с этим классом.

Создадим два файла:

  • index.php;
  • database.class.php;

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

Файл в котором храниться класс я выношу в отдельный файл и именую его в формате: имя класса.class.php и я знаю, что храниться у меня в этом файле. Когда в проекте много классов, можно потеряться, поэтому рекомендую именовать файлы с классами в формате описанным выше.

Файл database.class.php:

Давайте сейчас разберем, что было создано на данном шаге. С помощью ключевого слова «class», имени класса - DataBase и фигурный скобок мы создали тело класса. В созданном классе мы создали два свойства, в $mConnect - где храниться результат соединения с базой данных и $mSelectDB - где храниться результат выбора базы данных. Вы могли заметить ключевые слова в каждом свойстве - public и static. О чем они говорят? Public означает, что свойство доступно из вне класса, а static дает возможность обращаться или вызывать свойство без создания экземпляра класс, что очень часто удобно в работе.

Добавим метод Connect() для создания соединения с базой:

".mysql_error()."

"; exit(); return false; } // Возвращаем результат return self::$mConnect; } } ?>

  • $host - IP адрес сервера, на локальном ПК это localhost;
  • user - имя пользователя базы данных;
  • $pass - пароль пользователя базы данных;
  • $name - имя базы данных к которой подключаемся;

Функция mysql_connect() создает соединение с базой данных, результат выполнения сохраняет в $mConnect. Далее идет проверка конструкцией IF: Если подключение не прошло успешно, вывести сообщение об ошибке… Иначе PHP проигнорирует блок IF и пойдет дальше выбирать базу данных. Функция mysql_select_db() производит выбор имени базы данных, если в базе не существует запрашиваемой база данных, в этом случае программа сообщит пользователю об ошибке. Если все пройдет успешно, соединение с базой данных вернет return.

Добавляем метод Close():

К сожалению, не удалось подключиться к серверу MySQL

"; exit(); return false; } // Пробуем выбрать базу данных self::$mSelectDB = mysql_select_db($name, self::$mConnect); // Если база данных не выбрана, вывести сообщение об ошибке.. if(!self::$mSelectDB) { echo "

".mysql_error()."

"; exit(); return false; } // Возвращаем результат return self::$mConnect; } // Метод закрывает соединение с базой данных public static function Close() { // Возвращает результат return mysql_close(self::$mConnect); } } ?>

Следующий и уже последний в этом классе метод Close() - закрывает соединение с базой данных, функция mysql_close() закрывает соединение с сервером MySQL и возвращает результат.

Файл index.php:

С помощью функции define() мы создали константы, для хранения параметров соединения с базой данных. Require_once подключает наш класс DataBase в файл index.php.

Давайте вспомним ключевое слово static, которое использовалось в классе DataBase в свойствах и методах данного класса. Это дает нам возможность обращаться к свойствам и методам класса через "::" (два двоеточия). Метод DataBase::Connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_DATABASE), принимает 4 параметра - созданные функцие define() константы, в которых хранится информация о соединения с базой данных. Если соединение пройдет успешно, метод Connect() вернет нам соединение с базой данных. Далее мы сможем работать и выполнять запросы к базе данных. Функция mysql_query() - выполняет запрос к базе данных. Функция mysql_fetch_assoc() - обрабатывает ряд результата запроса и возвращает ассоциативный массив. Конструкция echo выводит версию сервера MySQL. И в завершение метод DataBase::Close() - закроет соединение с базой данных.

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

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

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

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

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

Yum install php-mysql

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

  • php-cli
  • php-common
  • php-pdo
  • php-pgsql

После того, как все установлено, страница phpinfo будет отображать 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. Мы также закрываем соединение, как показаны выше.

Подключение к базе данных. Количество строк: 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 и сделать выборку данных.

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

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

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

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

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

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

"; $result = mysql_query("SELECT name FROM employee"); $row = mysql_fetch_row($result); echo "Сотрудник 1: ", $row, "
\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

При помощи php...

Создание соединения с БД на 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 ("Ошибка такая то"); - переводится как или умри с такой-то ошибкой - чтобы сразу найти где ошибка.

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

require_once "config.php";


$result = mysql_query("SELECT Name, Money FROM Dolg ORDER BY Money DESC LIMIT 5") or die(mysql_error());



";


while ($row = mysql_fetch_assoc($result)) {
";
}


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

require_once "config.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);

// Закрываем соединение
mysqli_close ($link );
}

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

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

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

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

$conn = new mysqli($db_hostname, $db_username, $db_password, $db_database);
if($conn->connect_errno){
die($conn->connect_error);
} else {echo "Соединение с БД успешно установлено";}

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

  • $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

require_once "config.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() ;

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

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

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

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

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

index.php

// PDO стиль для связи с MySQL
if ($stmt = $mysqli->prepare("SELECT Name, Voney FROM Dolg ORDER BY Money < ? LIMIT 5")) {

$stmt->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 - это отдельная тема.

В этом документе описывается настройка соединения с базой данных MySQL из IDE NetBeans. После подключения с MySQL можно начать работать в проводнике баз данных среды IDE, создавая новые базы данных и таблицы, заполняя таблицы данными и делая структуру и содержимое баз данных доступными для запросов SQL. Этот учебный курс разработан для начинающих пользователей, обладающих базовым представлением об управлении базами данных, которым необходимо применить знания к работе с MySQL в IDE NetBeans.

Настройка свойств сервера MySQL

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

Запуск сервера MySQL

Перед попыткой подключения к серверу базы данных MySQL необходимо убедиться в том, что он запущен на компьютере. Если сервер базы данных не подключен, вы увидите (disconnected) рядом с именем пользователя в узле MySQL Server в окна "Служба" и не сможете развернуть узел.

Для подключения к серверу баз данных убедитесь, что сервер базы данных MySQL запущен на компьютере, щелкните правой кнопкой мыши "Базы данных" > узел "MySQL Server" в окне "Службы" и выберите "Подключить". Может отобразиться запрос на ввод пароля для подключения к серверу.


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

Создание экземпляра базы данных и подключение к ней

Редактор SQL является широко распространенным способом взаимодействия с базами данных. Для этого в IDE NetBeans имеется встроенный редактор SQL. Обычно редактор SQL доступен с помощью параметра "Выполнить команду" из контекстного меню узла подключения (или дочерних узлов узла подключения). После установления подключения к серверу MySQL, можно создать новый экземпляр базы данных в редакторе SQL. Для продолжения работы с данным учебным курсом создайте экземпляр с именем MyNewDatabase:


Создание таблиц баз данных

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

База данных MyNewDatabase в настоящее время пуста. В среде IDE таблицу базы данных можно добавить при помощи диалогового окна "Создание таблицы" или посредством ввода запроса SQL и его запуска напрямую из редактора SQL. Можно использовать оба метода.

Использование редактора SQL

Использование диалогового окна "Создание таблицы"


Работа с данными в таблице

Для работы с табличными данными можно использовать редактор SQL в IDE NetBeans. Выполняя запросы SQL в базе данных, можно добавлять, изменять и удалять данные в структурах баз данных. Для добавления новой записи (строки) в таблицу Counselor необходимо выполнить действия, описываемые ниже.


Выполнение сценария SQL

Другим способом управления табличными данными в IDE NetBeans является запуск внешнего сценария SQL напрямую в IDE. Если сценарий SQL был создан в другом местоположении его можно просто открыть в IDE NetBeans и запустить его в редакторе SQL.

Для наглядности загрузите файл и сохраните его на компьютере. Этот сценарий предназначен для создания двух таблиц, аналогичных только что созданным таблицам (Counselor и Subject), и немедленного заполнения их данными.

Поскольку этот сценарий перезаписывает уже существующие таблицы, удалите Counselor и Subject , чтобы зафиксировать процесс создания таблиц при выполнении сценария. Удаление таблиц

  1. Щелкните правой кнопкой мыши узлы таблиц Counselor и Subject в проводнике баз данных, после чего выберите Delete ("Удалить").
  2. Нажмите кнопку Yes ("Да") в диалоговом окне Confirm Object Deletion ("Подтверждение удаления объекта"). Обратите внимание, что в диалоговом окне перечисляются таблицы, которые будут удалены.

При нажатии кнопки Yes ("Да") в диалоговом окне Confirm Object Deletion ("Подтверждение удаления объекта") узлы таблиц автоматически удаляются из проводника баз данных.

Выполнение сценария SQL в базе данных MyNewDatabase


Дополнительные сведения

Это заключительный раздел учебного курса "Подключение к базе данных MySQL". В этом документе демонстрируется настройка MySQL на компьютере пользователя и настройка соединения с сервером баз данных из IDE NetBeans. Также были рассмотрены методы работы с MySQL в обозревателе баз данных среды IDE при создании экземпляров баз данных и таблиц, заполнении их данными и выполнении запросов SQL.

Более подробные учебные курсы представлены на следующих ресурсах:

  • Создание простого веб-приложения, использующего базу данных MySQL . Этот учебный курс предоставляет сведения о создании простых двухуровневых веб-приложений в среде IDE с использованием созданной базы данных MySQL.