Последнее обновление:
Как подключить базу данных MySQL к сайту на языке РНР
Статья может быть полезной, скорее, для новичков
В настоящее время, наверное, мало какой сайт обходится без баз данных – все дело только в их количестве, а также – в размере. На сравнительно небольших сайтах их размер может исчисляться десятками мегабайт, а так – не являются редкостью и сайты, имеющие базы данных объемом даже и несколько гигабайт.
База данных может быть создана «с нуля» или она может быть уже готовой
В первом случае особых проблем с ее подключением не должно возникнуть. А вот как быть, если необходимо подключить к сайту уже готовую базу данных?
Когда может возникнуть такая задача?
По сути, так или иначе, такая задача возникает, когда необходимо перенести сайт куда-нибудь в другое место. Например при переносе:
- На другой хостинг,
- На локальный сервер (тот же Denwer или OpenServer),
- Или даже на другой логин в пределах ОДНОГО И ТОГО ЖЕ хостинга.
Если со скриптами PHP все гораздо проще – их следует лишь скопировать в нужные каталоги и, быть может, прописать для них настройки в файлах типа .htaccess, php.ini, то с базами данных придется повозиться чуть дольше.
Рассмотрим, как подключить базу данных к сайту в Denwer при помощи phpMyAdmin
phpMyAdmin – это достаточно известная система управления (администрирования) базами данных.
Чтобы запустить ее в Denwer, следует ввести следующий URL: http://localhost/Tools/phpMyAdmin/main.php

Получим примерно следующее окно:
Чтобы посмотреть, какие базы данных уже подключены к локальному серверу, следует перейти на вкладку «Базы данных»:

Как видно, к локальному серверу подключены 4 базы данных:
information_schema, mysql, performance_schema, phpmyadmin.
Это – системные базы локального сервера Denwer.
Например, у нас имеется своя база данных под названием veresko.
Как ее подключить?
К сожалению, простое размещение ее где-нибудь в каталогах сайта никоим образом делу не поможет, так как сервер просто-напросто НЕ УЗНАЕТ о ней. Поэтому поступаем следующим образом. По шагам:
1. Определяемся с размером базы данных.
Дело в том, что в Denwer по умолчанию установлены следующие настройки:
- На импорт файлов – не более 2 МБ,
- На объем POST-запросов – не более 18 МБ.
Если у Вас база данных небольшая, то этих параметров Вам может хватить. Иначе – можно поступить двумя путями:
- Заархивировать файл готовой базы данных при помощи архиватора ZIP. Нередко, они очень даже хорошо сжимаются, раз в 10 и даже более. Denwer и phpMyAdmin вполне принимают как готовые файлы баз данных (с расширением .sql), так и их архивы (с расширением .zip).
- Изменить указанные Выше максимальные параметры в файле php.ini. К примеру, в Denwer этот файл находится в каталоге \usr\local\php5\php.ini.
Открываем этот файл и находим следующие параметры, устанавливая требуемые нам предельные значения, например:
- upload_max_filesize = 150M (по умолчанию там стоит 2М),
- post_max_size = 28M
Ну, и на всякий случай, проверим настройку file_uploads, которая должна быть установлена в On (иначе phpMyAdmin не сможет загрузить Вашу базу данных).
- Создаем новую базу данных. Для этого прямо наверху списка четырех (пока еще) баз данных, там, где есть надпись «Создать базу данных», указываем имя нашей базы данных, например, veresko. Затем нажимаем «Создать». После чего новая (наша) база данных появится в списке, т.е. будет уже не четыре, а пять баз данных. Возможно, потребуется обновить страницу:

- Теперь пришла пора импортировать файл с уже имеющейся (готовой) базой данных. Импорт будем производить, разумеется, в только что созданную базу данных под названием veresko.
Для этого переходим на вкладку «Импорт». Там выбираем наш файл с базой данных (т.е. непосредственно сам файл или его архив в формате zip).

Сверив кодировки, нажимаем «ОК». Процесс может занять некоторое время.
- Чтобы проконтролировать, создались ли новая база данных или таки нет, можно перейти в каталог
\usr\local\mysql-5.5\data\veresko
и убедиться, что там появились некие файлы. Их число определяется системой автоматически и зависит от того, насколько большой является база данных, сколько у нее имеется таблиц и т.д. - Окончательно, следует проверить права доступа к только что импортированной базе данных. Для этого переходим на вкладку «Базы данных» и около надписи veresko нажимаем «Проверить привилегии».
Там будут перечислены все пользователи, имеющие доступ к Вашей базе данных. В первую очередь это – root.
Т.е. там будет примерно такая таблица:
Пользователь | Хост | Тип | Привилегии | GRANT | Действие |
root | 127.0.0.1 | Глобальный уровень | ALL PRIVILEGES | Да | Редактирование привилегий |
root | ::1 | Глобальный уровень | ALL PRIVILEGES | Да | Редактирование привилегий |
root | localhost | Глобальный уровень | ALL PRIVILEGES | Да | Редактирование привилегий |
Если Вы планируете использовать базу данных как root (а это, еще раз, придется делать, если будет использоваться Denwer), то проблем нет, привилегии этого пользователя уже настроены. Но, можно также добавить дополнительных пользователей. Тогда в этой таблице появятся дополнительные строчки вида:
veresko | % | Глобальный уровень | ALL PRIVILEGES | Нет | Редактирование привилегий |
veresko | localhost | Глобальный уровень | ALL PRIVILEGES | Нет | Редактирование привилегий |
veresko | site.ru | Глобальный уровень | SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, CREATE VIEW, EVENT, TRIGGER, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EXECUTE | Нет | Редактирование привилегий |
Всё, на этом процесс установки базы данных на сервер закончен. Она теперь подключена к нему и может быть использована для запросов.
Проверим работу базы данных средствами РНР
Для этого запустим примерно такой код:
- $p['user'] = 'root';
- $p['pass'] = '';
- $p['host'] = 'localhost';
- $p['scheme'] = 'mysql';
- $conn = mysql_connect(
- $p['host'],
- $p['user'],
- $p['pass']);
- mysql_select_db('veresko') or die('NO database');
-
- $this->_resetLastError();
- $res = mysql_query("SELECT DATABASE() FROM DUAL");
- var_dump(mysql_fetch_assoc($res));
- echo 'First…'. PHP_EOL;
- $db_list = mysql_list_dbs($conn);
- $i = 0;
- $cnt = mysql_num_rows($db_list);
- while ($i < $cnt) {
- echo mysql_db_name($db_list, $i) . PHP_EOL;
- $i++;
- }
- echo 'Second…'. PHP_EOL;
- var_dump($p);
- die('conn='. $conn);
Примерно вот что получим в браузере после запуска:
- array(1) {
- ["DATABASE()"]=>
- string(15) "veresko"
- }
- First…
- information_schema
- mysql
- performance_schema
- phpmyadmin
- veresko
- Second…
- array(4) {
- ["scheme"]=> string(5) "mysql"
- ["host"]=> string(9) "localhost"
- ["user"]=> string(4) "root"
- ["pass"]=> string(0) ""
- }
- conn=Resource id #24
Пояснения по коду
В первых трех строчках устанавливаются параметры соединения с сервером баз данных. Как мы уже договорились, запускаем (только для целей тестирования) нашу базу данных из-под root, а пароль – обнуляем, т.е. задаем его в виде пустой строки.
Насчет хоста – почему же localhost? Ведь у нас будет, скорее всего, свой какой-то сайт, типа site.ru. Дело в том, что сервер баз данных находится на нашем же компьютере (это, разумеется, справедливо, если сайт будет расположен не на локальном хостинге, а в интернете). Причем, это – отдельный сервер, не наш site.ru. Именно потому и указываем localhost.
Строчки 4…7 пытаются установить соединение с сервером баз данных. А в строчке 8 происходит выбор базы данных под названием veresko (т.е. та самая только что импортированная нами база данных). Если соединение не будет установлено, выбрать базу данных не получится и будет выведено сообщение NO database.
Строчки 8.1, 8.2, 9 выводят имя нашей базы данных (т.е. той базы данных, с которой произошло соединение и которая выбрана для работы).
Примечание: если не сделать выбор, т.е. проигнорировать строчку 8, то результатом выполнения строчки 9 будет NULL.
Таким образом, мы вывели на экран название нашей базы данных.
После слова First приведен код, выводящий на экран ВСЕ подключенные базы данных – как нашу, так и четыре системных, которые мы уже видели, когда работали с phpMyAdmin.
Дальнейшее, надеемся, очевидно
Как видно, этот код вывел все пять баз данных.
Это означает, что все базы данных корректно подключены. В частности, и наша, недавно созданная база данных – тоже.