belarusweb.net
© Петр Романовский Минск, 2016-2017.



belarusweb.net

Основы создания сайтов...

PHP+MySQL >>>

                          Учебник Задачник Справочник

11.3. Установка соединения с MySQL и отправка запросов

Прежде чем получить возможность редактирования баз данных, необходимо выполнить подключение к серверу баз данных MySQL и войти под учетной записью пользователя, обладающего соответствующими привилегиями. Поскольку MySQL входит в состав сборки Xampp, первоначальный доступ к ней после установки сборки будет осуществляться исходя из стартовых настроек, которые подразумевают наличие учетной записи суперпользователя 'root', обладающего неограниченными привилегиями. При этом первоначальный пароль для доступа к данной учетной записи отсутствует. Запустите приложение phpMyAdmin и убедитесь в этом, после чего изучите пример 11.1.

<?php
//Оформим аргументы, которые необходимо передать конструктору 
//mysqli::__construct, в виде переменных

//Указываем имя хоста, с которого разрешен доступ пользователю
//По умолчанию доступ разрешен с "localhost" (запустите phpMyAdmin и посмотрите)
$servername = "localhost";
//Имя суперпользователя уже присутствует (запустите phpMyAdmin и посмотрите) 
$username = "root"; 
//Пароль пока не требуется
$password = "";

//Создаем объект соединения с MySQL	
$conn = new mysqli ($servername, $username, $password);

//Если произойдет ошибка соединения, то выведем строку с описанием последней ошибки
//подключения, использовав свойство объекта mysqli->connect_error и прервем скрипт
if ($conn->connect_error){   
   //Функция die() выводит сообщение и прекращает выполнение текущего скрипта
   echo "Ошибка соединения с сервером MySQL: ".$conn->connect_error."<br>";
	//Функция die() выводит сообщение и прекращает выполнение текущего скрипта	
	die("Соединение установлено не было.");
} 

//Установим кодировку данных для данного соединения с MySQL, чтобы не было 
//проблем с отображением русских символов.
$conn->set_charset("utf8"); 

//Теперь, когда мы подключились как суперпользователь, можем действовать
//Присвоим переменной строку запроса к серверу MySQL, использовав язык SQL
//Создадим нового пользователя 'admin_user'@'localhost' с паролем '123'
$sql_1 = "CREATE USER 'admin_user'@'localhost' IDENTIFIED BY '123'"; 

//Выполняем запрос и если он прошел успешно, сообщаем об успехе
if ($conn->query($sql_1) === true){
	echo "Пользователь успешно создан.<br>";     
} else {
	//Иначе прекращаем выполнение скрипта и выводим строку с описанием ошибки
	echo "Ошибка создания учетной записи: ".$conn->error.".";   
	//Т.к. соединение нам пока не нужно, закрываем его
	$conn->close();
	//Функция die() прекращает дальнейшее выполнение текущего скрипта	
	die();
}

//Наш пользователь пока не имеет никаких привилегий
//Наделяем пользователя 'admin_user' всеми глобальными привилегиями 
//с возможностью изменять привилегии других пользователей
$sql_2 = "GRANT ALL ON *.* TO 'admin_user'@'localhost' WITH GRANT OPTION";  

//Выполняем запрос и если он прошел успешно, сообщаем об успехе
if ($conn->query($sql_2) === true){
	echo "Привилегии установлены.<br>";     
} else{
	//Иначе прекращаем выполнение скрипта и выводим строку с описанием ошибки
	echo "Ошибка создания учетной записи: ".$conn->error.".";   
	//Т.к. соединение нам пока не нужно, закрываем его
	$conn->close();
	//Функция die() прекращает дальнейшее выполнение текущего скрипта	
	die();
}

//Т.к. соединение нам пока не нужно, закрываем его
$conn->close();   
?>

Пример 11.1. Создание учетной записи администратора

Теперь у нас имеется учетная запись администратора 'admin_user'@'localhost', который обладает всеми привилегиями. Если вы решите удалить суперпользователей по умолчанию 'root'@'127.0.0.1', 'root'@'localhost' и 'root'@'::1', будьте крайне аккуратны и случайно не удалите нашу запись администратора, иначе возникнут проблемы с доступом к серверу MySQL. Кроме того, после удаления данных записей вход с phpMyAdmin станет невозможным, пока не будут внесены изменения в config.inc.php, который находится в c:/xampp/phpMyAdmin. Поэтому, если вы все таки удалили записи по умолчанию, откройте данный файл в редакторе и внесите следующие изменения:

        	$cfg['Servers'][$i]['user'] = 'admin_user';
		$cfg['Servers'][$i]['password'] = '123';

Давайте сменим имя нашего пользователя на administrator, разрешим доступ к нашей учетной записи с любого компьютера и установим пароль понадежнее (см. пример 11.2).

<?php
//Оформим аргументы, которые необходимо передать конструктору 
//mysqli::__construct, в виде переменных

//Указываем имя хоста, с которого разрешен доступ пользователю
$servername = "localhost";
//Входим под именем администратора 
$username = "admin_user"; 
//Не забываем про пароль
$password = "123";

//Создаем объект соединения с MySQL	
$conn = new mysqli ($servername, $username, $password);

//Если произойдет ошибка соединения, то выведем строку с описанием последней ошибки
//подключения, использовав свойство объекта mysqli->connect_error и прервем скрипт
if ($conn->connect_error){   
   //Функция die() выводит сообщение и прекращает выполнение текущего скрипта
   echo "Ошибка соединения с сервером MySQL: ".$conn->connect_error."<br>";
	//Функция die() выводит сообщение и прекращает выполнение текущего скрипта	
	die("Соединение установлено не было.");
}

//Установим кодировку данных для данного соединения с MySQL, чтобы не было 
//проблем с отображением русских символов.
$conn->set_charset("utf8"); 

//Присвоим переменной строку запроса к серверу MySQL
//Знак '%' означает любую последовательность символов, поэтому далее 
//пользователь сможет подключаться с любого компьютера
//Не забудьте внести изменения и в c:/xampp/phpMyAdmin/config.inc.php
$sql_1 = "RENAME USER 'admin_user'@'localhost' TO 'administrator'@'%'"; 

//Выполняем запрос и если он прошел успешно, сообщаем об успехе
if ($conn->query($sql_1) === true){
	echo "Имя пользователя успешно изменено.<br>";     
} else {
	//Иначе прекращаем выполнение скрипта и выводим строку с описанием ошибки
	echo "Ошибка изменения имени пользователя: ".$conn->error.".";   
	//Т.к. соединение нам пока не нужно, закрываем его
	$conn->close();
	//Функция die() прекращает дальнейшее выполнение текущего скрипта	
	die();
}

//Сменим пароль пользователя. Напомним, что 'administrator' == 'administrator'@'%' !
$sql_2 = "GRANT ALL ON *.* TO 'administrator' IDENTIFIED BY '12345' WITH GRANT OPTION";  

//Выполняем запрос и если он прошел успешно, сообщаем об успехе
if ($conn->query($sql_2) === true){
	echo "Пароль успешно изменен.<br>";     
} else{
	//Иначе прекращаем выполнение скрипта и выводим строку с описанием ошибки
	echo "Ошибка изменения пароля: ".$conn->error.".";   
	//Т.к. соединение нам пока не нужно, закрываем его
	$conn->close();
	//Функция die() прекращает дальнейшее выполнение текущего скрипта	
	die();
}

//Т.к. соединение нам пока не нужно, закрываем его
$conn->close();   
?>

Пример 11.2. Редактирование учетной записи администратора

Будем считать, что все записи суперпользователей удалены и теперь у нас имеется только одна учетная запись администратора 'administrator' с паролем '12345' и всеми привилегиями. Используем ее для создания учебной базы belarusweb_users (см. пример 11.3).

<?php
//Оформим аргументы, которые необходимо передать конструктору 
//mysqli::__construct, в виде переменных

//Имя хоста задаем как "localhost", хотя можем входить с любого компьютера
$servername = "localhost";
//Входим под именем администратора  
$username = "administrator"; 
//Не забываем про пароль
$password = "12345";

//Создаем объект соединения с MySQL	
$conn = new mysqli ($servername, $username, $password);

//Если произойдет ошибка соединения, то выведем строку с описанием последней ошибки
//подключения, использовав свойство объекта mysqli->connect_error и прервем скрипт
if ($conn->connect_error){   
   //Функция die() выводит сообщение и прекращает выполнение текущего скрипта
   echo "Ошибка соединения с сервером MySQL: ".$conn->connect_error."<br>";
	//Функция die() выводит сообщение и прекращает выполнение текущего скрипта	
	die("Соединение установлено не было.");
} 

//Установим кодировку данных для данного соединения с MySQL, чтобы не было 
//проблем с отображением русских символов.
$conn->set_charset("utf8");

//Cоздаем основную учебную базу данных (имя в кавычки брать не нужно)
//Не забываем задать кодировку символов, используемую в ней
$sql_1 = "create database belarusweb_users CHARACTER SET utf8"; 

//Выполняем запрос и если он прошел успешно, сообщаем об успехе
if ($conn->query($sql_1) === true){
	echo "База данных belarusweb_users создана.<br>";     
} else {
	//Иначе прекращаем выполнение скрипта и выводим строку с описанием ошибки
	echo "Ошибка создания базы данных: ".$conn->error.".";   
	//Т.к. соединение нам пока не нужно, закрываем его
	$conn->close();
	//Функция die() прекращает дальнейшее выполнение текущего скрипта	
	die();
}

//Т.к. соединение нам пока не нужно, закрываем его
$conn->close();   
?>

Пример 11.3. Создание базы данных

Создадим в базе данных таблицу our_users (см. пример 11.4). В ней мы будем хранить данные о пользователях.

<?php
//Оформим аргументы, которые необходимо передать конструктору 
//mysqli::__construct, в виде переменных

//Имя хоста задаем как "localhost", хотя можем входить с любого компьютера
$servername = "localhost";
//Входим под именем администратора  
$username = "administrator"; 
//Не забываем про пароль
$password = "12345";
//Указываем базу данных, к которой будем  подключаться
$db_name = "belarusweb_users";

//Создаем объект соединения с MySQL	
$conn = new mysqli ($servername, $username, $password, $db_name);

//Если произойдет ошибка соединения, то выведем строку с описанием последней ошибки
//подключения, использовав свойство объекта mysqli->connect_error и прервем скрипт
if ($conn->connect_error){   
   //Функция die() выводит сообщение и прекращает выполнение текущего скрипта
   echo "Ошибка соединения с сервером MySQL: ".$conn->connect_error."<br>";
	//Функция die() выводит сообщение и прекращает выполнение текущего скрипта	
	die("Соединение установлено не было.");
}

//Установим кодировку данных для данного соединения с MySQL, чтобы не было 
//проблем с отображением русских символов.
$conn->set_charset("utf8");

//Cоздаем таблицу our_users (имя в кавычки брать не нужно)
//В скобках перечисляем имена столбцов, а также через пробел их характеристики
$sql = "create table our_users(".
			"id int(5) unsigned primary key auto_increment,".
			"first_name varchar(25) not null,".
			"last_name varchar(25) not null,".
			"age int(2) not null,".
			"sex varchar(8) not null,".
			"reg_mail varchar(40) not null,".
			"reg_date timestamp not null".
			") character set utf8";  

//Выполняем запрос и если он прошел успешно, сообщаем об успехе
if ($conn->query($sql) === true){
	echo "Таблица успешно создана.<br>";     
} else {
	//Прекращаем выполнение скрипта и выводим строку с описанием ошибки
	echo "Ошибка создания таблицы: ".$conn->error.".";   
	//Т.к. соединение нам пока не нужно, закрываем его
	$conn->close();
	//Функция die() прекращает дальнейшее выполнение текущего скрипта	
	die();
}

//Т.к. больше соединение нам пока не нужно, закрываем его
$conn->close();   
?>

Пример 11.4. Создание таблицы

Осталось добавить в таблицу какие-нибудь данные (см. пример 11.5).

<?php
//Оформим аргументы, которые необходимо передать конструктору 
//mysqli::__construct, в виде переменных

//Имя хоста задаем как "localhost", хотя можем входить с любого компьютера
$servername = "localhost";
//Входим под именем администратора  
$username = "administrator"; 
//Не забываем про пароль
$password = "12345";
//Указываем базу данных, к которой будем  подключаться
$db_name = "belarusweb_users";
//Создаем объект соединения с MySQL	
$conn = new mysqli ($servername, $username, $password, $db_name);

//Если произойдет ошибка соединения, то выведем строку с описанием последней ошибки
//подключения, использовав свойство объекта mysqli->connect_error и прервем скрипт
if ($conn->connect_error){   
   //Функция die() выводит сообщение и прекращает выполнение текущего скрипта
   echo "Ошибка соединения с сервером MySQL: ".$conn->connect_error."<br>";
	//Функция die() выводит сообщение и прекращает выполнение текущего скрипта	
	die("Соединение установлено не было.");
}
//Установим кодировку данных для данного соединения с MySQL, чтобы русские символы правильно отображались в базе.
$conn->set_charset("utf8"); 

//В первых скобках перечисляем имена столбцов, во вторых соответствующие значения
//Порядок столбцов может быть любым, но тогда нужно поменять и порядок соответствующих 
//им значений. Количество значений должно быть равным количеству столбцов
$sql = "insert into our_users(first_name,	last_name, age, sex, reg_mail)".
			"values('Сергей', 'Петров', 30, 'мужской', 'my_mail_1@tut.by')";   

//Выполняем запрос и если он прошел успешно, сообщаем об успехе
if ($conn->query($sql) === true){
	echo "Операция успешно выполнена.<br>";     
} else {
	//Прекращаем выполнение скрипта и выводим строку с описанием ошибки
	echo "Ошибка операции: ".$conn->error.".";   
	//Т.к. соединение нам пока не нужно, закрываем его
	$conn->close();
	//Функция die() прекращает дальнейшее выполнение текущего скрипта	
	die();
}

//Т.к. больше соединение нам пока не нужно, закрываем его
$conn->close();   
?>

Пример 11.5. Добавление в таблицу данных о пользователях

Прежде, чем идти дальше, еще раз посмотрите в официальном справочнике информацию по использованным нами методам и свойствам модуля MySQLi:

Комментарии (0)
Петр Романовский
1. Приветствуются комментарии, которые содержат дополнения к материалу текущей страницы, а также ваши ответы на вопросы других пользователей.
2. Если вам что-то непонятно - спрашивайте, не забывая написать, что именно и с какого места.
Показаны все комментарии
Чтобы оставить свой комментарий, авторизуйтесь, пожалуйста!    
     
belarusweb.net © Петр Романовский, Минск, 2016-2017.
Связаться с автором
Наверх