Работаете 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\n";
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";
?>

Читайте также:

Читайте нас в Telegram, VK и Яндекс.Дзен


Перевод статьи Balachandra DS: How to connect Mysql database to php website

Предыдущая статьяПогружение в графы
Следующая статьяСкрытые нововведения в iOS 15