<MyRusakov.ru />

Профессия Web-разработчик

Профессия Web-разработчик

Этот комплект за 8 месяцев превратит Вас в Web-разработчика с нуля. Учиться достаточно 1 час в день.

Начнёте Вы с HTML, CSS и вёрстки сайтов. Потом перейдёте к программированию и JavaScript. Затем изучите PHP, MySQL, SQL, Python. Изучите Web-фреймворки Laravel и Django. Создадите 5 своих сайтов для портфолио.

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

- 540 видеоуроков

- 110 часов видео

- 1205 заданий для закрепления материала из уроков

- 5 финальных тестов

- 7 сертификатов

- 12 Бонусных курсов

Подробнее
Подписка

Подпишитесь на мой канал на YouTube, где я регулярно публикую новые видео.

YouTube Подписаться

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Какая тема Вас интересует больше?

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

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

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

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

Прежде, чем перейти к подключение к базе данных в PHP, давайте разберём алгоритм работы с ними:

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

Подключиться к базе данных через PHP можно следующим образом:

<?php
  $mysqli = new mysqli('localhost', 'Admin', 'pass', 'mybase');
?>

Тут всё интуитивно понятно, однако, сделаю пояснения: мы создаём экземпляр объекта MySQLI, передавая конструктору следующие параметры:

  1. Имя хоста, на котором работает MySQL.
  2. Имя пользователя.
  3. Пароль.
  4. Имя базы данных, с которой мы хотим работать.

Если какие-нибудь данные будут неверные, то, соответственно, конструктор вернёт ошибку, и подключения не будет.

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

<?php
  $mysqli = @new mysqli('localhost', 'Admin', 'pass', 'mybase');
  if (mysqli_connect_errno()) {
    echo "Подключение невозможно: ".mysqli_connect_error();
  }
?>

В данном примере мы проверяем: если были какие-либо ошибки при подключении, то выводим их и заканчиваем выполнение скрипта (функция exit()). Также обратите внимание на оператор подавления ошибок "@", который мы вставляем для того, чтобы убрать сообщение PHP о невозможности подключения, ведь мы это потом сами проверяем и выводим уведомление.

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

<?php
  $mysqli = @new mysqli('localhost', 'Admin', 'pass', 'mybase');
  if (mysqli_connect_errno()) {
    echo "Подключение невозможно: ".mysqli_connect_error();
  }
  $mysqli->close();
?>

Как Вы догадались, закрывает подключение метод close().

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

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (32):

vasdom vasdom 19.05.2012 19:28:18

Процедурный стиль <?php $link = @mysqli_connect('localhost', 'fake_user', 'my_password', 'my_db'); if (!$link) { die('Ошибка соединения: ' . mysqli_connect_errno()); } ?>

Ответить

vasdom vasdom 19.05.2012 19:29:55

Что лучше? Объектно-ориентированный стиль или Процедурный стиль? Прикоментуй что где использовать.

Ответить

Admin Admin 19.05.2012 19:36:58

ООП лучше, так как является более современным и более удобным (чтобы это понять, нужно изучать ООП).

Ответить

vasdom vasdom 19.05.2012 19:30:59

Объектно-ориентированный стиль <?php $mysqli = @new mysqli('localhost', 'fake_user', 'my_password', 'my_db'); if ($mysqli->connect_errno) { die('Ошибка соединения: ' . $mysqli->connect_errno); } ?>

Ответить

lodyry lodyry 03.09.2012 23:49:05

Не работает. не соединяет. А "процедурный стиль" работает. в чём подвох??

Ответить

Admin Admin 04.09.2012 11:31:58

Разве что у Вас очень старая версия php, в которой это не поддерживается.

Ответить

lodyry lodyry 04.09.2012 13:30:04

"Денвер" этим летом скачивала. месяц тому. Естественно, последнюю версию. Может, с настройками что не так? Что есть старая версия php?

Ответить

Admin Admin 04.09.2012 14:23:37

Значит проблема может быть только в том, что Вы где-то допускаете ошибку. Если Вы недавно установили Денвер, то у Вас точно всё должно поддерживаться и никаких настроек дополнительных не надо.

Ответить

lodyry lodyry 04.09.2012 15:30:16

Точно по уроку делала. перепроверила код раз 20. База данных пуста. может не в подключении дело. но через"mysqli_connect" получается. вот

Ответить

korjik korjik 03.02.2013 23:49:33

Михаил, такая проблема: Я пытаюсь создать класс для удобной работы с запросами MySQLi. Вот код: <?php class mysqli_class { private $host; private $database; private $name; private $pass; private $link; public $query; public function __construct ($host, $name, $password, $base) { $this -> host = $host; $this -> name = $name; $this -> pass = $password; $this -> database = $base; } public function connect() { if (!($this -> link = new mysqli($this -> host, $this -> name, $this -> pass))) { $this -> error('Не могу подключиться к '.$this -> host); return false; } if (!mysqli_select_db($this -> link, $this -> database)) { $this -> error('Не могу войти в базу '.$this -> database); return false; } } public function query($query) { $this -> connect(); $this -> result = mysqli_query($this -> link, $query) or $this -> error('Не могу выполнить запрос'); return $this -> result; } } ?> А вот само обращение: <?php require('classes\mysqli_class.php'); $mysqli = new mysqli_class('localhost', 'root', 'pass', 'agrobuy'); $mysqli -> query('SELECT * FROM ads ORDER BY ad_id DESC LIMIT 3'); while ($row = mysqli_fetch_array($mysqli -> result)) { } ?> Все ли здесь правильно? У меня сомнения..будто что-то лишнее..хотя вроде работает..

Ответить

Admin Admin 04.02.2013 13:17:39

Раз работает, то пойдёт для начала. Хотя нюансов здесь много. Я через пару недель напишу свой класс и выложу здесь на сайте.

Ответить

Juriy_1990 Juriy_1990 28.02.2013 01:08:49

Делал на локальном сервере соединение с базой данных - вот всё отлично работало,а на реальном сервере зарегился, и теперь выдаёт такую ошибку:"Warning: mysqli::mysqli(): (HY000/1130): Host '***' is not allowed to connect to this MySQL server in /home/***/public_html/blocks/function.php on line 6 Warning: mysqli::query(): Couldn't fetch mysqli in /home/***/public_html/blocks/function.php on line 7" может Вы взглядом мастера увидите сразу, в чём дело?)

Ответить

Admin Admin 28.02.2013 11:05:07

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

Ответить

vegas vegas 21.04.2013 23:55:03

В PHP v.5.1 появился класс PDO (PHP Data Objects). Михаил, если у Вас будет желание и время, напишете статью? Очень хотелось бы увидеть обзор этого класса на человеческом языке ;) Заранее благодарен

Ответить

ural@ ural@ 21.05.2013 10:59:53

Помогите пожалуйста! Подключаюсь к базе данных, вот код:<?php $mysqli = @new Mysqli('localhost', 'MyAdmin', '123456', 'mybase'); if(mysqli_connect_errno()) { echo "Подключение к серверу невозможно. Причина : ".mysqli_connect_error(); exit; } $mysqli->close(); ?> Открываю сайт, пишет:Access denied for user 'MyAdmin'@'localhost' (using password: YES). В чём ошибка? Пароль и пользователь введены правильно! В phpMyadmin созданы!

Ответить

Admin Admin 21.05.2013 14:32:40

Используйте пользователя root и пустой пароль.

Ответить

ural@ ural@ 27.05.2013 19:51:13

Но как избавиться от этой проблемы???Или подскажите как создать пользователя через конфиг. файл.

Ответить

Admin Admin 27.05.2013 21:12:08

http://myrusakov.ru/phpmyadmin-users.html

Ответить

malina95 malina95 07.07.2013 22:11:16

Миша, напиши пожалуйста несколько статей про хранение сессий в базе данных, причём сделай данную статью с готовым классом для работы, в интернете не нашёл ничего кроме теории, напиши про namespace, trait, mvc на ооп(структура распределения классов и сущностей), напиши про MOVE, HMVC, работу с git, причём на статьи по git удели побольше времени, все будут рады что ты пишешь современные и нужные статьи, и ещё что-нибудь про структуирование папок и классов при проектировании сайта, где что должно лежать, и опиши все изветсные архитектуры проектирования. Не напишешь, будешь дураком, сейчас все про это пишут и получают хороший трафик, чем ты хуже?

Ответить

Alexabcdef Alexabcdef 20.01.2014 19:09:17

Михаил, Здравствуйте! Помогите пожалуйста, у меня возникла проблема с добавлением записей в таблицу через PHP. Ошибку не выводит, сколько не пересматривал код - вроде все правильно. Суть ошибки в том, что после обновления страницы в БД записей нету. Там пусто. вот код: <?php $mysqli = new mysqli("localhost", "root", "", "mybase"); $mysqli->query("SET NAMES 'utf8'"); $success = $mysqli->query("INSESRT INTO `users` (`login`, `password`) VALUES ('User1', '".md5(123)."')"); echo $success; $mysqli->close(); ?>

Ответить

tikkiwiki tikkiwiki 21.01.2014 11:04:15

Александр, проверьте подключение к БД, скорее всего не верно настроенное соединение.

Ответить

Jey-Val-Star Jey-Val-Star 02.12.2014 14:56:25

А есть ли смысл закрывать соединение с бд? В гуле искал - однозначного ответа ненашел типа "само закроется"

Ответить

Ziama Ziama 13.12.2014 20:26:02

Здравствуйте, изучаю курс "Создание и раскрутка сайта от А до Я", пытаюсь подключиться к MySQL, по уроку, но получаю:"Подключение невозможно: Access denied for user 'MyAdmin'@'localhost' (using password: YES) Warning: mysqli::close() [mysqli.close]: Couldn't fetch mysqli in Z:\home\test1.local\www\index.php on line 10" Все делал как в уроке, кроме выбора кодировки, так как все пишу в UTF8, её и поставил и в базе и в коде:"$host="localhost"; $user="MyAdmin"; $password="123456"; $db="mybase"; $mysqli = @new mysqli('localhost', $user, $password, $db); if (mysqli_connect_error()) { echo "Подключение невозможно: ".mysqli_connect_error(); } $mysqli->close();" Подскажите в чем может быть дело, заранее спасибо.

Ответить

alexandrdante alexandrdante 13.12.2014 21:37:30

всё дело в том, что вы не правильно ввели логин и пароль от базы данных =)

Ответить

Ziama Ziama 13.12.2014 21:47:34

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

Ответить

alexandrdante alexandrdante 13.12.2014 21:51:57

значит не совпадают,или не имеют доступа к бд. Попробуйте в логин вставить root, а пароль оставить пустым

Ответить

Ziama Ziama 13.12.2014 21:56:52

root, прошёл... Тогда, не понятно, почему не проходит MyAdmin с паролем 123456, как указано в уроке... Как тогда подключать другого пользователя?

Ответить

alexandrdante alexandrdante 13.12.2014 22:31:32

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

Ответить

Ziama Ziama 13.12.2014 22:37:07

Возможно Вы и правы, только не понятно зачем тогда это нужно было включать в урок, если нельзя этим воспользоваться на локальном сервере? И в уроке ведь все работает..

Ответить

alexandrdante alexandrdante 13.12.2014 22:45:37

я вам ещё раз говорю,значит что-то не верно сделали,или упустили. Всё,естественно,работает. Без разницы,сколько раз вы перепроверяли,проверьте ещё раз. Пересмотрите заново,проверьте права на доступ к базе данных mybase у пользователя MyAdmin. Вероятнее всего их просто нет. Либо,пароль не верен всё-таки. Авторизируйтесь через phpmyadmin c данного аккаунта и посмотрите,какие базы данных там видны и есть ли среди них mybase

Ответить

alex-pro100-alex alex-pro100-alex 01.06.2015 14:14:51

Привет программистам! У меня такая проблема: В общем я в программировании еще совсем новичок и не знаю как мне создать "базу данных", в каком файле ее подключить и как с ней работать. Кто может - ПОМОГИТЕ. Чтобы не было лишних вопросов - сразу скажу: Denwer у меня есть и на нем я тестирую движек, который собрал (кое как=)), из текстовых редакторов у меня - Notepad++.

Ответить

Begemotov Begemotov 09.02.2023 11:10:10

Hello from 2023 guys, NIS TDK. Aslan was here SIUU

Ответить

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.