Соединение с бд php. Создание базы данных mysql от А до Я
3 метода подключения к MySQL с PHP с примерами кода
Чтобы начать пользоваться базой данных MySQL, надо в первую очередь понять, как подключиться из вашей пользовательской PHP-программы (скрипта) к этой самой базе данных MySQL.
В этой статье описаны следующие три метода, а также соответствующие примеры PHP-кода, в которых объясняется, как подключиться к вашей базе данных из PHP.
Для всех приведенных ниже примеров мы будем подключаться к уже существующей базе данных MySQL. Примечание: все, что объясняется здесь, также будет работать с MariaDB, так же как и с MySQL.
1. Подключение к PHP с помощью расширения mysqli
*mysqli означает MySQL Improved
Создайте следующий файл mysqli.php
connect_error) {
die("Ошибка: невозможно подключиться: " . $conn->connect_error);
}
echo "Подключились к базе.
";
$result = $conn->query("SELECT id FROM goroda");
echo "Количество строк: $result->num_rows";
$result->close();
$conn->close();
?>
В приведенном выше коде:
- mysqli - эта функция инициирует новое соединение с использованием расширения mysqli. Функция принимает четыре аргумента:
- localhost имя хоста, на котором запущена база данных MySQL
- name - имя пользователя MySQL для подключения
- pass - пароль для пользователя mysql
- db - база данных MySQL для подключения.
- qvery - функция запроса MySQL. В этом примере мы выбираем столбец id из базы данных городов.
- Наконец, мы показываем количество строк, выбранных с использованием переменной num_rows в результате. Мы также закрываем как результат, так и переменную соединения, как показано выше.
Подключились к базе.
Количество строк: 6
2. Подключение из PHP MySQL PDO Extension
*PDO означает объекты данных PHP
Драйвер PDO_MYSQL реализует интерфейс PDO, предоставляемый PHP, для подключения из вашего PHP-скрипта к базе данных MySQL.
Создайте следующий файл mysql-pdo.php:
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Подключились к базе.
";
$sql = "SELECT id FROM goroda";
print "Список id:
";
foreach ($conn->query($sql) as $row) {
print $row["id"] . "
";
}
$conn = null;
}
catch(PDOException $err) {
echo "Ошибка: невозможно подключиться: " . $err->getMessage();
}
?>
В приведенном выше:
- new PDO - создаст новый объект PDO, который примет следующие три аргумента:
- mysql connect string: он будет в формате «mysql:host=localhost;dbname=db». В приведенном выше примере db работает на localhost, и мы подключаемся к базе данных db.
- Имя пользователя MySQL для подключения
- Пароль для пользователя mysql
- переменная $sql - создать запрос sql, который вы хотите выполнить. В этом примере мы выбираем столбец id из таблицы городов.
- query ($sql). Здесь мы выполняем запрос sql, который мы только что создали.
- foreach. Здесь мы перебираем результат из указанной выше команды запроса и сохраняем ее в переменной $row, а затем выводим ее с помощью echo.
- В MySQL PDO, чтобы закрыть соединение, просто установите переменную $conn в значение null.
Подключились к базе. Список id: 1 2 3 4 5 6 3. Подключение из PHP c использование устаревших функций mysql
Используйте этот метод, только если вы используете более старую версию PHP и по какой-то причине не можете обновить ее до новой версии. Рекомендуется использовать метод №2 и метод №3, показанные выше, вместо этого метода. Я включил этот метод только для справки, а не как рекомендацию для использования.
Это конкретное расширение было устарело от версии PHP 5.5. Но, начиная с версии PHP 7.0, это даже не будет работать, поскольку оно было удалено. Начиная с версии PHP 5.5, когда вы используете эти функции, она будет генерировать ошибку E_DEPRECATED.
Создайте файл mysql.php:
";
$result = mysql_query("SELECT id FROM goroda");
$row = mysql_fetch_row($result);
echo "id 1: ", $row, "
\n";
mysql_close($conn);
?>
В приведенном выше:
- Функция mysql_connect принимает три аргумента:
- имя хоста, в котором запущена база данных MySQL;
- имя пользователя MySQL для подключения;
- пароль для пользователя mysql. Здесь он подключается к базе данных MySQL, которая выполняется на локальном сервере с использованием имени пользователя и его пароля.
- Функция mysql_select_db. Как следует из названия, она выбирает базу данных, к которой вы хотите подключиться. Эквивалентно команде «use». В этом примере мы подключаемся к базе данных db.
- Функция mysql_query - используется для указания вашего запроса MySQL. В этом примере мы выбираем столбец id из базы данных городов. mysql_fetch_row. Используйте эту функцию для извлечения строк из SQL-запроса, который мы только что создали.
- Наконец, закройте соединение, используя команду mysql_close, как показано выше.
Подключились к базе. id 1: 1 Вот таким образом можно подключаться к MySQL. Повторюсь, лучше использовать два первых способа; о
Уровень сложности: Несложно
Что вам понадобится:
- Установленная БД MySQL (например, из комплекта Denwer).
- Связка Apache+PHP или программа, работающая с базой данных - установленная на втором компьютере.
- Локальное или Интернет-соединение между компьютером-клиентом и компьютером-сервером.
- Доступ к пользователю "root" (или любому другому, имеющему полные права) базы данных.
1 шаг
Для начала, сядьте за компьютер, где у вас установлена MySQL. Зайдите в папку, где она у вас установлена (чаще всего это папка вида “X:\usr\mysql”, где X – любая буква жесткого или сетевого диска), и там вы найдете файл “my.cnf”. Если у него значок вида “компьютер со стрелочкой, как у ярлыка” (см. изображение к шагу) – создайте в папке ярлык блокнота (или любого другого текстового редактора, например – ), и для открытия файла “my.cnf” перетаскивайте файл на ярлык текстового редактора; если же значок вида “неизвестный файл” или “текстовый файл” – открывайте любым текстовым редактором.
2 шаг
Найдите строку с параметром “bind-address”, и если в начале строки не стоит решетка (#) – поставьте ее. Не забудьте сохранить файл после редактирования.
3 шаг
Перезапустите БД. Конечно, у каждого свои способы – например, можете “убить” процесс “mysqld.exe” через Диспетчер задач (Ctrl+Alt+Delete), а потом запустить БД сначала. С новыми настройками MySQL будет принимать соединения с других компьютеров; правда, обмена данными не получится, если при подключении не указать имя и пароль пользователя, который имеет право использовать БД с удаленного компьютера.
4 шаг
Подключитесь под пользователем “root” (или любым другим пользователем, имеющем полные права) к базе данных с того же компьютера, где стоит база данных, и выполните следующую команду:
GRANT ALL ON *.* TO ’user’@’%’ IDENTIFIED BY ‘password’ WITH GRANT OPTION
Заменив заранее “user” на имя пользователя, которому будет позволено подключаться к БД с удаленного компьютера, “password” – на пароль, который должен использовать пользователь.
Так же вы можете заменить “*.*” на “db.*” – это позволит пользователю работать только с базой данных “db”; или на “db.table” – тогда пользователь будет еще более ограниченным в правах и сможет работать только таблицей “table” в базе данных “db”. Вызвав команду GRANT
несколько раз для одного и того же пользователя, но меня объект, на который даете права, вы можете указать точно, с чем сможет работать пользователь.
Команда GRANT
в MySQL 5.1 [англ.]
5 шаг
Теперь вы сможете подключиться к базе данных с удаленного компьютера, используя имя пользователя и пароль, которые вы использовали в комманде GRANT . Для того, чтобы забрать права у пользователя (например, забрать право на работу с определенной базой данных), используйте команду REVOKE :
REVOKE ALL , GRANT OPTION ON *.* FROM ’user’@’%’ IDENTIFIED BY ‘password’
Параметры идут не совсем в том же порядке, что и в предыдущем шаге – но они эквивалентны.
Команда REVOKE
в MySQL 5.1 [англ.]
6 шаг
Удалить пользователя (вдруг понадобиться удалить тестового пользователя) можно командой DROP USER :
DROP USER ’user’@’%’ IDENTIFIED BY ‘password’
Обратите внимание, что DROP
USER
не отключит удаляемых пользователей, если они сейчас подключены к БД; но если они отключатся, то подключиться уже не смогут.
Команда DROP
USER
в MySQL 5.1 [англ.]
- "%" в описанных командах обозначает, что пользователь может подсоединиться с любого компьютера. Если написать "localhost" или "127.0.0.1" - только с локального. А можно указать конкретный IP - например, "192.168.0.1".
- С помощью команды GRANT вы можете сделать, например, двух разных пользователей с одинаковыми именами и паролями, но с разными дозволенными IP-адресами и разными правами. Или два пользователя с одинаковыми именами, но разными паролями. Думайте, что именно вам нужно.
В этом документе описывается настройка соединения с базой данных 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 , чтобы зафиксировать процесс создания таблиц при выполнении сценария. Удаление таблиц
- Щелкните правой кнопкой мыши узлы таблиц Counselor и Subject в проводнике баз данных, после чего выберите Delete ("Удалить").
- Нажмите кнопку Yes ("Да") в диалоговом окне Confirm Object Deletion ("Подтверждение удаления объекта"). Обратите внимание, что в диалоговом окне перечисляются таблицы, которые будут удалены.
При нажатии кнопки Yes ("Да") в диалоговом окне Confirm Object Deletion ("Подтверждение удаления объекта") узлы таблиц автоматически удаляются из проводника баз данных.
Выполнение сценария SQL в базе данных MyNewDatabase
Дополнительные сведения
Это заключительный раздел учебного курса "Подключение к базе данных MySQL". В этом документе демонстрируется настройка MySQL на компьютере пользователя и настройка соединения с сервером баз данных из IDE NetBeans. Также были рассмотрены методы работы с MySQL в обозревателе баз данных среды IDE при создании экземпляров баз данных и таблиц, заполнении их данными и выполнении запросов SQL.
Более подробные учебные курсы представлены на следующих ресурсах:
- Создание простого веб-приложения, использующего базу данных MySQL . Этот учебный курс предоставляет сведения о создании простых двухуровневых веб-приложений в среде IDE с использованием созданной базы данных MySQL.
После того, как Вы установили сервер MySQL, подключиться к нему Вы можете только с этой же машины. Сделано это в целях безопасности системы, так как в большинстве случаев MySQL используется в Web, а там в редких случаях разносят web-сервер и сервер баз данных.
В корпоративном же сегменте правильнее использовать 1 сервер под все похожие задачи. Глупо держать MySQL с одной базой данных на каждом сервере, где он может потребоваться. Поэтому сервер баз данных должен быть один, на котором заведено нужное количество баз данных под разные задачи.
Кстати, в Web`е разносят сервер базы данных и web-сервер только в тех случаях, когда мощности одного сервера не хватает. Арендуется выделенный сервер и выноситься на него база данных. Хотелось бы уточнить, что делать это разумно только в пределах одного ДЦ.
Разрешаем подключаться к MySQL удаленно
В конфигурационном файле самого MySQL есть параметр bind-address , который отвечает за это, поэтому:
- открываем конфигурационный файл для редактирования:
sudo nano /etc/mysql/my.cnf - комментируем строку:
# bind-address = 127.0.0.1 - перезапускаем MySQL:
sudo service mysql restart
Закомментировать эту строку равносильно тому, что присвоить IP-адрес 0.0.0.0 , то есть разрешить подключаться всем. Указать 2 IP-адреса в этой строчке нельзя. Если нужно ограничить подключение к серверу MySQL, нужно использовать возможности iptables.
Теперь через telnet-клиент Вы можете подключиться к серверу базы данных, но для того, чтобы зайти внутрь нужна учетная запись, которой разрешено подключаться не только с localhost. Для этого нужно подключиться к MySQL с самого сервера и создать такого пользователя:
Mysql -u root -p
И командой создаем пользователя:
GRANT ALL PRIVILEGES ON *.* TO "новый_пользователь"@"удаленный_адрес" IDENTIFIED BY "пароль" WITH GRANT OPTION;
Эта строчка создает пользователя с неограниченными правами, что делать не совсем правильно. Правильнее максимально ограничить доступ пользователя, который подключается удаленно. Поэтому команда может выглядеть так:
GRANT SELECT,INSERT,DELETE,UPDATE,CREATE,ALTER ON "имя_базы".* TO "новый_пользователь"@"удаленный_адрес" IDENTIFIED BY "пароль" WITH GRANT OPTION;
Этой командой мы ограничили полномочия пользователя только одной базой данных и действиями с ней.
Полный список всех прав, которые можно указать пользователю:
- ALL PRIVILEGES – все права на указанный объект за исключением назначения прав на этот объект;
- CREATE – право на создание таблицы;
- ALTER – право на изменение таблицы;
- DROP – право на уничтожение таблицы;
- LOCK TABLES – право на блокировку таблицы;
- CREATE TEMPORARY TABLES – право на создание временных таблиц;
- CREATE ROUTINE – право на создание хранимых процедур и функций;
- ALTER ROUTINE – право на изменение или уничтожение хранимых процедур и функций;
- CREATE VIEW – право на создание представления;
- TRIGGER – право на создание и уничтожение триггеров;
- INDEX – права на создание и уничтожение индексов;
- EXECUTE – право на выполнения хранимых процедур и функций;
- EVENT – право на создание событий;
- CREATE USER – права на создание, уничтожение, переименование пользователя и снятия все прав. Назначается только на глобальном уровне;
- SELECT – право на выборку;
- DELETE – право на удаление;
- INSERT – право на вставку;
- UPDATE – право на обновление;
- FILE – право на использование команд SELECT … INTO OUTFILE и LOAD DATA INFILE ;
- PROCESS – право на просмотр всех процессов командой SHOW PROCESSLIST ;
- SHOW DATABASES – право на просмотр списка схем;
- SHOW VIEW – право на просмотр списка представлений;
- SHUTDOWN – право на закрытие.
Д ля того, чтобы получить максимальную отдачу от вашей базы данных 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. Эта функция будет принимать четыре аргумента:
- Имя хоста, где база данных MySQL работает
- Имя пользователя для подключения MySQL
- Пароль для пользователя mysql
- База данных 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, который будет принимать следующие три аргумента:
- Строка подключения MySQL: будет в формате “mysql:host=$hostname;dbname=$dbname”. В приведенном выше примере, БД работает на локальном хосте, и мы подключаемся к базе данных andreyex.
- Имя пользователя для подключения к MySQL.
- Пароль для пользователя 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