Содержание
- 1 Содержание
- 2 Запуск сервера MySQL
- 3 Работа с данными в таблице
- 4 Создание БД и таблиц
- 5 Table of Contents
- 6 Подключение в PHP к MySQL и выполнение запросов
- 7 PHP модули для подключения к серверу MySQL (PDO и MySQLi)
- 8 Безопасное подключение через SSH-туннель
- 9 Создание экземпляра базы данных и подключение к ней
- 10 Как подключиться к MySQL серверу с помощью PHP?
- 11 Подключение к базе данных
Содержание
- mysql_affected_rows — Возвращает число затронутых прошлой операцией рядов
- mysql_client_encoding — Возвращает кодировку соединения
- mysql_close — Закрывает соединение с сервером MySQL
- mysql_connect — Открывает соединение с сервером MySQL
- mysql_create_db — Создает базу данных MySQL
- mysql_data_seek — Перемещает внутренний указатель в результате запроса
- mysql_db_name — Возвращает название базы данных из вызова к mysql_list_dbs
- mysql_db_query — Переключается на указанную базу данных и посылает запрос
- mysql_drop_db — Уничтожает базу данных MySQL
- mysql_errno — Возвращает численный код ошибки выполнения последней операции с MySQL
- mysql_error — Возвращает текст ошибки последней операции с MySQL
- mysql_escape_string — Экранирует строку для использования в mysql_query
- mysql_fetch_array — Обрабатывает ряд результата запроса, возвращая ассоциативный массив, численный массив или оба
- mysql_fetch_assoc — Возвращает ряд результата запроса в качестве ассоциативного массива
- mysql_fetch_field — Возвращает информацию о колонке из результата запроса в виде объекта
- mysql_fetch_lengths — Возвращает длину каждого поля в результате
- mysql_fetch_object — Обрабатывает ряд результата запроса и возвращает объект
- mysql_fetch_row — Обрабатывает ряд результата запроса и возвращает массив с числовыми индексами
- mysql_field_flags — Возвращает флаги, связанные с указанным полем результата запроса
- mysql_field_len — Возвращает длину указанного поля
- mysql_field_name — Возвращает название указанной колонки результата запроса
- mysql_field_seek — Устанавливает внутренний указатель результата на переданное смещение поля
- mysql_field_table — Возвращает название таблицы, которой принадлежит указанное поле
- mysql_field_type — Возвращает тип указанного поля из результата запроса
- mysql_free_result — Освобождает память от результата запроса
- mysql_get_client_info — Возвращает данные о MySQL-клиенте
- mysql_get_host_info — Возвращает информацию о соединении с MySQL
- mysql_get_proto_info — Возвращает информацию о протоколе MySQL
- mysql_get_server_info — Возвращает информацию о сервере MySQL
- mysql_info — Возвращает информацию о последнем запросе
- mysql_insert_id — Возвращает идентификатор, сгенерированный при последнем INSERT-запросе
- mysql_list_dbs — Возвращает список баз данных, доступных на сервере
- mysql_list_fields — Возвращает список колонок таблицы
- mysql_list_processes — Возвращает список процессов MySQL
- mysql_list_tables — Возвращает список таблиц базы данных MySQL
- mysql_num_fields — Возвращает количество полей результата запроса
- mysql_num_rows — Возвращает количество рядов результата запроса
- mysql_pconnect — Устанавливает постоянное соединение с сервером MySQL
- mysql_ping — Проверяет соединение с сервером и пересоединяется при необходимости
- mysql_query — Посылает запрос MySQL
- mysql_real_escape_string — Экранирует специальные символы в строках для использования в выражениях SQL
- mysql_result — Возвращает данные результата запроса
- mysql_select_db — Выбирает базу данных MySQL
- mysql_set_charset — Устанавливает кодировку клиента
- mysql_stat — Возвращает текущий статус сервера
- mysql_tablename — Возвращает имя таблицы, содержащей указанное поле
- mysql_thread_id — Возвращает идентификатор текущего потока
- mysql_unbuffered_query — Посылает запрос MySQL без авто-обработки результата и его буферизации
Запуск сервера MySQL
Перед попыткой подключения к серверу базы данных MySQL необходимо убедиться в том, что он запущен на компьютере. Если сервер базы данных не подключен, вы увидите (disconnected) рядом с именем пользователя в узле MySQL Server в окна ‘Служба’ и не сможете развернуть узел.
Для подключения к серверу баз данных убедитесь, что сервер базы данных MySQL запущен на компьютере, щелкните правой кнопкой мыши ‘Базы данных’ > узел ‘MySQL Server’ в окне ‘Службы’ и выберите ‘Подключить’. Может отобразиться запрос на ввод пароля для подключения к серверу.
После подключения сервера вы сможете развернуть узел MySQL Server и просмотреть все доступные базы данных MySQL.
Работа с данными в таблице
Для работы с табличными данными можно использовать редактор SQL в IDE NetBeans. Выполняя запросы SQL в базе данных, можно добавлять, изменять и удалять данные в структурах баз данных. Для добавления новой записи (строки) в таблицу Counselor необходимо выполнить действия, описываемые ниже.
Выберите элемент «Выполнение команды» в папке «Таблицы» проводника баз данных. В главном окне редактора SQL отобразится пустой холст. В редакторе SQL введите следующий запрос. INSERT INTO Counselor VALUES (1, ‘Ricky’, ‘»The Dragon»‘, ‘Steamboat’,’334 612-5678′, ‘r_steamboat@ifpwafcad.com’, ‘1996-01-01’)
Чтобы выполнить запрос щелкните правой кнопкой мыши в редакторе SQL Editor и выберите ‘Выполнить оператор’. В окне «Вывод» будет выведено сообщение об успешном выполнении запроса.
Чтобы убедиться, что новая запись добавлена к таблице Counselor в проводнике баз данных щелкните правой кнопкой мыши узел таблицы Counselor и выберите ‘Просмотреть данные’. В главном окне редактора SQL откроется новая панель. При выборе команды «Просмотреть данные» в верхней части окна редактора SQL автоматически создается запрос на выбор всех данных таблицы. Результаты выполнения оператора отображаются в представлении таблицы в нижней части окна. В рассматриваемом примере будет отображена таблица Counselor
Обратите внимание, что новая строка была добавлена с данными, предоставленными в запросе SQL.
Создание БД и таблиц
Создать БД можно из панели управления хостингом, если есть такая возможность, а если нет, то из phpMyAdmin. Сравнение ставим utf8_general_ci.
Заходим в БД и создадим таблицу users, которую будем использовать для примера. Она будет включать колонки: ID(int), login(varchar) и pass(varchar). ID будет первичным ключом, а также будет иметь галочку напротив AI(auto increment), что позволит каждой новой записи присваивать id на 1 больше, чем у прошлой записи. Кроме этого, не забываем проставить длину varchar’ам и поставить сравнение utf8_general_ci к полям login и pass.
Получаем:
Теперь мы имеем готовую БД и таблицу для работы с ней.
Table of Contents
- mysql_affected_rows — Get number of affected rows in previous MySQL operation
- mysql_client_encoding — Returns the name of the character set
- mysql_close — Close MySQL connection
- mysql_connect — Open a connection to a MySQL Server
- mysql_create_db — Create a MySQL database
- mysql_data_seek — Move internal result pointer
- mysql_db_name — Retrieves database name from the call to mysql_list_dbs
- mysql_db_query — Selects a database and executes a query on it
- mysql_drop_db — Drop (delete) a MySQL database
- mysql_errno — Returns the numerical value of the error message from previous MySQL operation
- mysql_error — Returns the text of the error message from previous MySQL operation
- mysql_escape_string — Escapes a string for use in a mysql_query
- mysql_fetch_array — Fetch a result row as an associative array, a numeric array, or both
- mysql_fetch_assoc — Fetch a result row as an associative array
- mysql_fetch_field — Get column information from a result and return as an object
- mysql_fetch_lengths — Get the length of each output in a result
- mysql_fetch_object — Fetch a result row as an object
- mysql_fetch_row — Get a result row as an enumerated array
- mysql_field_flags — Get the flags associated with the specified field in a result
- mysql_field_len — Returns the length of the specified field
- mysql_field_name — Get the name of the specified field in a result
- mysql_field_seek — Set result pointer to a specified field offset
- mysql_field_table — Get name of the table the specified field is in
- mysql_field_type — Get the type of the specified field in a result
- mysql_free_result — Free result memory
- mysql_get_client_info — Get MySQL client info
- mysql_get_host_info — Get MySQL host info
- mysql_get_proto_info — Get MySQL protocol info
- mysql_get_server_info — Get MySQL server info
- mysql_info — Get information about the most recent query
- mysql_insert_id — Get the ID generated in the last query
- mysql_list_dbs — List databases available on a MySQL server
- mysql_list_fields — List MySQL table fields
- mysql_list_processes — List MySQL processes
- mysql_list_tables — List tables in a MySQL database
- mysql_num_fields — Get number of fields in result
- mysql_num_rows — Get number of rows in result
- mysql_pconnect — Open a persistent connection to a MySQL server
- mysql_ping — Ping a server connection or reconnect if there is no connection
- mysql_query — Send a MySQL query
- mysql_real_escape_string — Escapes special characters in a string for use in an SQL statement
- mysql_result — Get result data
- mysql_select_db — Select a MySQL database
- mysql_set_charset — Sets the client character set
- mysql_stat — Get current system status
- mysql_tablename — Get table name of field
- mysql_thread_id — Return the current thread ID
- mysql_unbuffered_query — Send an SQL query to MySQL without fetching and buffering the result rows
Подключение в PHP к MySQL и выполнение запросов
Последнее обновление: 1.11.2015
Для подключения к MySQL из PHP нам надо указать настройки подключения: адрес сервера, логин, пароль, название базы данных и т.д. Так как обычно подключения к бд используются множеством скриптов, то нередко настройки подключения выносятся в отдельный файл, благодаря чему легче их оперативно изменять.
Итак, создадим файл connection.php и добавим в его следующие строки:
<?php $host = 'localhost'; // адрес сервера $database = 'compstore'; // имя базы данных $user = 'root'; // имя пользователя $password = '1234567'; // пароль ?>
Так как мы будем подключаться к серверу на локальной машине, то адресом сервера будет localhost. В качестве базы данных выберем созданную в прошлом теме базу данных compstore.
По умолчанию на локальном сервере MySQL уже есть пользователь root, под которым мы и будем подключаться. И также нам необходим пароль, который мы указали при установке MySQL.
Теперь мы можем подключиться к базе данных:
<?php require_once 'connection.php'; // подключаем скрипт // подключаемся к серверу $link = mysqli_connect($host, $user, $password, $database) or die("Ошибка " . mysqli_error($link)); // выполняем операции с базой данных // закрываем подключение mysqli_close($link); ?>
Первым делом подключаем скрипт с настройками с помощью инструкции .
Для открытия подключения применяем функцию mysqli_connect(). Он принимает все конфигурационные настройки и подключается к серверу. В случае ошибки подключения срабатывает оператор , который выводит сообщение об ошибке и завершает работу скрипта. А в случае успешного подключения функция возвращает объект подключения в виде переменной .
После окончания работы подключение нужно закрыть. Для этого применяется функция mysqli_close(), которая в качестве параметра принимает объект подключения.
Чтобы осуществить запрос к базе данных, нам надо использовать функцию mysqli_query(), которая принимает два параметра: объект подключения и строку запроса на языке SQL. Например:
<?php require_once 'connection.php'; // подключаем скрипт // подключаемся к серверу $link = mysqli_connect($host, $user, $password, $database) or die("Ошибка " . mysqli_error($link)); // выполняем операции с базой данных $query ="SELECT * FROM phones"; $result = mysqli_query($link, $query) or die("Ошибка " . mysqli_error($link)); if($result) { echo "Выполнение запроса прошло успешно"; } // закрываем подключение mysqli_close($link); ?>
Функция возвращает объект , который содержит результат запроса. В случае неудачи данный объект содержит значение .
НазадВперед
PHP модули для подключения к серверу MySQL (PDO и MySQLi)
PHP может работать с сервером MySQL используя модули:
- MySQLi («i» — improved)
- PDO (PHP Data Objects)
Ранее в PHP применялась функция , которая в PHP версии 5.5.0 была признана устаревшей и полностью упразднена в PHP версии 7.0.0.
Что использовать MySQLi или PDO? Это зависит от ваших предпочтений.
MySQLi и PDO обеспечивают современное, а главное безопасное соединение с базами данных и имеют защиту от SQL инъекций.
PDO поддерживает не только MySQL, а также еще несколько типов СУБД (CUBRID, MS SQL Server, Firebird, Informix, ODBC, DB2, 4D, SQLite, PostgreSQL, Oracle). Причем если понадобится вы можете поменять тип СУБД в любой момент и вам не придется переписывать все запросы в приложении т.к. они продолжат спокойно работать с новой СУБД. PDO использует только объектно-ориентированный подход к работе с БД.
MySQLi работает только с MySQL и при смене СУБД придется переписывать весь код приложения и запросы. MySQLi использует как объектно-ориентированный подход, так и процедурный, что расширяет ее API.
Я же лично отдаю предпочтение PDO т.к. его основным отличием является, возможность ловить исключения. Так при ошибке в работе с БД будет создано исключение, в результате чего дальнейший код не будет выполнятся. Также знание PDO может пригодится при работе с другими СУБД.
Безопасное подключение через SSH-туннель
В целях обеспечения безопасности ваших данных используйте подключение к базам данных MySQL через SSH-туннель. Данные передаются по SSH-туннелю в зашифрованном виде, что исключает возможность их перехвата.
Настройка SSH-туннеля
Установите на ваш компьютер программу putty. Это бесплатное программное обеспечение, скачать ее можно на официальном сайте.
Запустите программу.
В категории настроек «Session» в поле «Имя хоста» (Host Name) укажите домен вашего сайта.
Перейдите в категорию настроек Connection → SSH → Tunnels и в поле «Source port» укажите значение 3306, в поле «Destination» — localhost:3306.
После этого нажмите кнопку «Add».
После этого нажмите кнопку «Open». Установится соединение с вашим хостом.
В качестве логина и пароля используйте ваши данные для входа в Панель управления хостингом.
Туннель установлен. Для соединения с базой данных используйте имя пользователя и пароль, заданные вами при создании базы данных в разделе Панели управления «Базы данных». В качестве адреса сервера используйте 127.0.0.1, порт для подключения 3306.
Пример подключения с помощью программы mysql (пароль будет запрошен при подключении):
Внимание: если на вашем компьютере уже работает сервер баз данных MySQL, подключение удаленному серверу по порту 3306 будет невозможно. В этом случае при создании подключения в putty укажите другой порт в качестве «Source port», например, 3307
Используйте этот порт при подключении к базе данных.
В командной строке выполните следующую команду:
- 3306 (сразу после ключа -L) — порт на локальном компьютере, к которому вы сможете подключаться клиентом mysql;
- yourlogin — имя вашего аккаунта (логин в Панели управления);
- yourdomain.ru — имя вашего сайта.
В качестве пароля используйте пароль для входа в Панель управления хостингом.
Туннель установлен. Для соединения с базой данных используйте имя пользователя и пароль, заданные вами при создании базы данных в разделе Панели управления «Базы данных». В качестве адреса сервера используйте 127.0.0.1, порт для подключения 3306.
Пример подключения с помощью программы mysql (пароль будет запрошен при подключении):
Внимание: если на вашем компьютере уже работает сервер баз данных MySQL, подключение удаленному серверу по порту 3306 будет невозможно. В этом случае при запуске ssh сразу после ключа -L укажите альтернативный порт, например, 3307
Используйте этот порт при подключении к базе данных.
Проверить соединение с БД можно посредством утилиты telnet. Войдите в интерфейс командной строки (в ОС MS Windows: Пуск → Выполнить → cmd.exe), наберите команду:
Если соединение установлено, процедуру настройки туннеля можно считать завершенной. В противном случае необходимо тщательно проверить настройки, убедиться в отсутствии сетевых проблем и связаться со службой технической поддержки.
Создание экземпляра базы данных и подключение к ней
Редактор SQL является широко распространенным способом взаимодействия с базами данных. Для этого в IDE NetBeans имеется встроенный редактор SQL. Обычно редактор SQL доступен с помощью параметра ‘Выполнить команду’ из контекстного меню узла подключения (или дочерних узлов узла подключения). После установления подключения к серверу MySQL, можно создать новый экземпляр базы данных в редакторе SQL. Для продолжения работы с данным учебным курсом создайте экземпляр с именем MyNewDatabase:
-
В окне ‘Службы’ среды IDE щелкните правой кнопкой мыши узел сервера MySQL Server и выберите ‘Создать базу данных’.
Откроется диалоговое окно «Создание базы данных MySQL». - В диалоговом окне «Создание базы данных MySQL» введите имя новой базы данных. В этом учебном курсе используется имя . Не устанавливайте флажок.
Примечание. Также определенному пользователю можно предоставить полный доступ. По умолчанию только администратор обладает правами на выполнение определенных команд. Раскрывающийся список позволяет присваивать эти права определенным пользователям.
- Нажмите кнопку «ОК».
В узле «Сервер MySQL» окна «Службы» будет выведена новая база данных.
- Щелкните узел новой базы данных правой кнопкой мыши и выберите ‘Подключение’, чтобы установить соединение с базой данных.
Открытые подключения к базе данных отображаются в узле ‘Установленные подключения’ () в окне ‘Службы’.
Как подключиться к MySQL серверу с помощью PHP?
Для возможности обмена данными между PHP и MySQL необходимо установить соединение.
Подключение через MySQLi (объектно-ориентированный подход)
<?php $server = «localhost»; $user = «root»; $password = «MySafePass4!»;
// Открываем соединение $mysqli_connection = new mysqli($server, $user, $password);
// Проверка результата подключения if ($mysqli_connection->connect_error) { die(«Подключение не удалось: » . $mysqli_connection->connect_error); } echo «Подключение прошло успешно!»;
// Закрываем соединение $mysqli_connection->close(); ?>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<?php $server=»localhost»; $user=»root»; $password=»MySafePass4!»; // Открываем соединение $mysqli_connection=newmysqli($server,$user,$password); // Проверка результата подключения if($mysqli_connection->connect_error){ die(«Подключение не удалось: «.$mysqli_connection->connect_error); } echo»Подключение прошло успешно!»; // Закрываем соединение $mysqli_connection->close(); ?> |
Подключение через MySQLi (процедурный подход)
<?php $server = «localhost»; $user = «root»; $password = «MySafePass4!»;
// Открываем соединение $mysqli_connection = mysqli_connect($server, $user, $password);
// Проверка результата подключения if (!$mysqli_connection) { die(«Подключение не удалось: » . mysqli_connect_error()); } echo «Подключение прошло успешно!»;
// Закрываем соединение mysqli_close($mysqli_connection); ?>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<?php $server=»localhost»; $user=»root»; $password=»MySafePass4!»; // Открываем соединение $mysqli_connection=mysqli_connect($server,$user,$password); // Проверка результата подключения if(!$mysqli_connection){ die(«Подключение не удалось: «.mysqli_connect_error()); } echo»Подключение прошло успешно!»; // Закрываем соединение mysqli_close($mysqli_connection); ?> |
Подключение через PDO
<?php $server = «localhost»; $user = «root»; $password = «MySafePass4!»;
try { $pdo_connection = new PDO(«mysql:host=$server;dbname=test», $user, $password); // Определяем ошибки как исключения $pdo_connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); echo «Подключение прошло успешно!»; }
// Отлавливаем исключение catch(PDOException $e) { echo «Подключение не удалось: » . $e->getMessage(); } // Закрываем соединение $pdo_connection = null; ?>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<?php $server=»localhost»; $user=»root»; $password=»MySafePass4!»; try{ $pdo_connection=newPDO(«mysql:host=$server;dbname=test»,$user,$password); // Определяем ошибки как исключения $pdo_connection->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); echo»Подключение прошло успешно!»; } // Отлавливаем исключение catch(PDOException$e){ echo»Подключение не удалось: «.$e->getMessage(); } // Закрываем соединение $pdo_connection=null; ?> |
Подключение к базе данных
Последнее обновление: 08.08.2018
Вначале создадим на сервере MySQL пустую базу данных, которую назовем store и с которой мы будет работать в приложении на Java. Для создания базы данных применяется выражение SQL:
CREATE DATABASE store;
Его можно выполнить либо из консольного клиента MySQL Command Line Client, либо из графического клиента MySQL Workbench, которые устанавливются вместе с сервером MySQL. Подробнее про создание базы данных можно прочитать в статье Создание и удаление базы данных.
Для подключения к базе данных необходимо создать объект java.sql.Connection. Для его создаия применяется метод:
Connection DriverManager.getConnection(url, username, password)
Метод в качестве параметров принимает адрес источника данных, логин и пароль. В качестве логина и пароля передаются логин и пароль от сервера MySQL. Адрес локальной базы данных MySQL указывается в следующем формате:
Пример создания подключения к созданной выше локальной базе данных store:
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost/store", "root", "password");
После завершения работы с подключением его следует закрыть с помощью метода close():
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/store", "root", "password"); // работа с базой данных connection.close();
Либо мы можем использовать конструкцию try:
try (Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/store", "root", "password")){ // работа с базой данных }
Возможные проблемы с часовыми поясами и SSL
При подключении к базе данных MySQL мы можем столкнуться с рядом проблем. Например, определим следующий код подключения:
import java.sql.Connection; import java.sql.DriverManager; public class Program{ public static void main(String[] args) { try{ String url = "jdbc:mysql://localhost/store"; String username = "root"; String password = "password"; Class.forName("com.mysql.cj.jdbc.Driver").getDeclaredConstructor().newInstance(); try (Connection conn = DriverManager.getConnection(url, username, password)){ System.out.println("Connection to Store DB succesfull!"); } } catch(Exception ex){ System.out.println("Connection failed..."); System.out.println(ex); } } }
Даже если указаны правильно адрес базы данных, логин, пароль, мы все равно можем столкнуться с ошибками:
Из консольного вывода видно, что проблема заключается с SSL и часовым поясом. Чтобы решить данную проблему, необходимо указать в адресе подключения часовой пояс бд и параметры для использования ssl. В частности, я указываю, что SSL не будет использоваться и что часовым поясом будет московский часовой пояс:
String url = "jdbc:mysql://localhost/store?serverTimezone=Europe/Moscow&useSSL=false";
Файлы конфигурации
Мы можем определить все данные для подключения непосредственно в программе. Однако что если какие-то данные были изменены? В этом случае потребуется перекомпиляция приложения. Иногда это не всегда удобно, например, отсутствует досуп к исходникам, или перекомпиляция займет довольно продолжительное время. В этом случае мы можем хранить настройки в файле.
Так, создадим в папке программы новый текстовый файл database.properties, в котором определим настройки подключения:
url = jdbc:mysql://localhost/store?serverTimezone=Europe/Moscow&useSSL=false username = root password = password
Загрузим эти настройки в программе:
import java.sql.*; import java.nio.file.*; import java.io.*; import java.util.*; public class Program{ public static void main(String[] args) { try{ Class.forName("com.mysql.cj.jdbc.Driver").getDeclaredConstructor().newInstance(); try (Connection conn = getConnection()){ System.out.println("Connection to Store DB succesfull!"); } } catch(Exception ex){ System.out.println("Connection failed..."); System.out.println(ex); } } public static Connection getConnection() throws SQLException, IOException{ Properties props = new Properties(); try(InputStream in = Files.newInputStream(Paths.get("database.properties"))){ props.load(in); } String url = props.getProperty("url"); String username = props.getProperty("username"); String password = props.getProperty("password"); return DriverManager.getConnection(url, username, password); } }
НазадВперед
С этим читают
- Sql server express localdb
- Php: pdo быстрый старт, работа с mysql
- Php: работа с бд mysql
- Что такое субд
- Как сбросить пароль root для mysql или mariadb
- Download sql server management studio (ssms)
- Установка служб integration services (ssis)install integration services (ssis)
- Создание базы данныхcreate a database
- Как установить linux, nginx, mysql, php (lemp) в ubuntu 16.04/18.04
- Ошибка wordpress error establishing database connection