Как подключить базу данных MySQL к сайту на PHP



Книга Как подключить базу данных MySQL к сайту на PHP

Работаете c программами на PHP в Linux и у вас есть задача по интегрированию MySQL на сайт на PHP? Тогда это руководство для вас. 😉


Необходимые условия:


PHP и установленный веб-сервер (например, Apache).


Создание таблицы при загрузке сайта


Для начала у вас должен быть установлен PHP. Чтобы получить версию, запускаем:


php -v

Вот такой ответ должен прийти:



Теперь установим сервер MySQL. Для этого открываем терминал и запускаем:


sudo apt-get install mysql-server

Вводим пароль, чтобы начать установку, и нажимаем на Enter.


Проверяем, установлен ли MySQL, этой командой:


sudo mysql

Если установка прошла успешно, выводится примерно следующее:



Теперь для доступа к базе данных с использованием программы на PHP нужно передать в качестве аргументов в SQL-запросе имя пользователя и пароль. Поэтому создадим пользователя с паролем и предоставим ему права доступа к базе данных.


Нового пользователя и пароль создаем, выполняя следующую команду:


sudo mysql -u rootCREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';

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


GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'localhost';FLUSH PRIVILEGES;

И для доступа к MySQL в Google Cloud:


GRANT ALL PRIVILEGES ON `%`.* TO 'newuser'@'localhost';

Для привязки ко всем адресам запускаем это:


#bind-address = 127.0.0.1

Для создания нового пользователя и пароля нужно выполнить указанные выше команды. После добавления нового пользователя выходим и перезапускаем сервер MySQL:


exit
service mysql restart

Обратите внимание: в случае с PHP версией 7+ для правильного выполнения команд MySQL необходимо использовать расширение MySQLi. Функции MySQLi позволяют получать доступ к серверам баз данных MySQL.


Для установки расширения MySQLi запускаем:


Sudo apt Install php-mysqli

Теперь все готово к выполнению программ на PHP с интегрированием MySQL. Переходим к решению сформулированной выше задачи.


Первым делом создадим базу данных на сервере MySQL. Для этого подключимся к серверу MySQL:


sudo mysql

Для того, чтобы создать таблицу, сначала нужно создать базу данных. Следующей командой создаем базу данных с названием «test»:


create database test;

Дальше эту базу данных нужно выбрать:


use test;
exit

Код для создания таблицы при загрузке сайта


База данных готова, теперь напишем код для создания таблицы при загрузке сайта.


Как было указано в необходимых условиях, в качестве хоста будет использоваться Apache2, поэтому выполняем такие команды:


cd /var/www/html
vim sqltest.php

С их помощью создается файл и открывается редактор Vim.


Копируем и вставляем в редактор следующий код:


<html>
<head>
<title> creating mysql tables </title>
</head>
<body>
<?php
$dbhost = 'localhost';
$dbuser= 'newuser';
$dbpass = 'password';
$conn = mysqli_connect($dbhost , $dbuser , $dbpass,"test");
if(!$conn){
die('Could not connect:'.mysqli_error($conn));
}
echo 'Connected successfully </br>';
$sql="CREATE TABLE student(".
"USN INT NOT NULL,".
"Name VARCHAR(100) NOT NULL,".
"Marks VARCHAR(40) NOT NULL);";
mysqli_select_db($conn,'test');
$retval=mysqli_query($conn,$sql);
if(! $retval){
die('Could not create table:'.mysqli_error($conn));
}
echo "Table created successfully
";
mysqli_close($conn);
?>
</body>
</html>

В строках 7, 8 и 9 объявляются переменные, в которых сохраняются имя пользователя, пароль и localhost. Дальше они задействуются в строке 10 и передаются в качестве параметров в команду mysqli_connect, которой инициируется соединение с сервером MySQL. Если соединение установить не удалось, для отображения ошибки используется оператор if и mysqli_error(). Затем пишется запрос на создание таблицы, который присваивается переменной sql. И запускается запрос для выбора базы данных test. После чего запускается mysqli_query для создания таблицы посредством передачи в качестве параметров переменных sql и connection.


Теперь сохраняем файл и выходим из него, открываем браузер и заходим на этот сайт:


http://localhost/sqltest.php.


Если все работает правильно, получаем сообщение об успешном создании таблицы.


Если при открытии сайта сообщения не видно, переходим в каталог, в котором создан файл:


cd /var/www/html

И выполняем в терминале следующую команду:


php -S localhost:8000

Открываем браузер и заходим на такой сайт:


http://localhost:8000/sqltest.php.



Теперь сообщение об успешном создании таблицы будет видно.


Проверим, выполнив в терминале команду:


sudo mysql

Теперь запускаем:


use test;
desc student;


Примечания:
1) Имя пользователя MySQL  —  «newuser», а пароль  —  «password».
2) Поменяйте все команды с MySQL на MySQLi, если у вас версия PHP 7+ , например mysql_connect станет mysqli_connect, а mysql_error() станет mysqli_error().


Появление возможных ошибок, и как с ними справиться:


  1. При выполнении команды создания проверяйте, те ли кавычки используете. Ведь ` и  —  это разные знаки.
  2. Если при выполнении программы есть какая-либо ошибка в SQL-запросе, связанная с форматом, то при присваивании $sql

$sql="CREATE TABLE student(".
"USN INT NOT NULL,".
"Name VARCHAR(100) NOT NULL,".
"Marks VARCHAR(40) NOT NULL);";

поставьте в конце запроса вместо точки точку с запятой.


3. Если возникли проблемы с командами MySQLi, выполните следующие команды:


php -v

Затем запишите свою версию PHP. Для этого в первой из следующих четырех команд замените x.x на свою версию PHP:


sudo apt-get install phpx.x-mysqli
sudo service apache2 restart
sudo phpenmod mysqli
sudo service apache2 restart

Так, если у вас версия PHP 7.4, то команда будет sudo apt-get install php7.4-mysqli.


4. Каждый раз, когда заходите на свой сайт на PHP, запускайте в каталоге, где находится программа на PHP, следующую команду:


php -S localhost:8000

И при получении какой-либо ошибки, например такой:



Запускайте эту команду:


fuser -k 8000/tcp

И после выполнения php -S localhost:8000 он заработает. Так как процесс, задействующий этот порт, будет уничтожен и его можно будет использовать.


Еще одна программа на PHP


И вот еще одна программа на PHP для добавления новых записей в таблицу, попробуйте.


Прежде чем выполнять программу, запускаем запрос в MySQL для создания таблицы:


create table book(Acc_no INTEGER(20),Title varchar(50),Author varchar(50),Publisher varchar(50),Edition INTEGER(3));

HTML-код


<html>
<head><title>Deatails</title></head>
<body>
<form action = "phpfile.php" method="post">
<h1>ENTER DETAILS</h1>
ACCNO<input type="text"name="Acc_no"> <br>
<br>
TITLE<input type="text"name="Title"> <br>
<br>
AUTHOR<input type="text"name="Author"> <br>
<br>
EDITION<input type="text"name="Edition"> <br>
<br>
PUBLICATION<input type="text"name="Publisher"> <br>
<br>
<input type="submit"value="SUBMIT">
<input type="reset"value="CLEAR">
</form>
</body>
</html>

PHP-код:


<?php
header('content-type:text/plain');
$db=mysqli_connect('localhost','newuser','password','test');
if(!$db){
die('Could not connect:');
}
$sql="insert into book (Acc_no,Title,Author,Publisher,Edition)".
"values('$_REQUEST[Acc_no]',".
"'$_REQUEST[Title]','$_REQUEST[Author]',".
"'$_REQUEST[Publisher]','$_REQUEST[Edition]');";
mysqli_select_db($db,'test');
$retval=mysqli_query($db,$sql);
if(! $retval){
die('Could not insert values');
}
echo "Record Insertion Successful";
?>

1105   0  

Comments

    Ничего не найдено.