Использование PHP для вставки информации в базу данных MySQL/MariaDB из HTML-формы

PHP-скрипт — это удобный способ принимать информацию, вводимую из HTML-формы веб-сайта, и вставлять ее в базу данных MySQL/MariaDB. В этом уроке мы рассмотрим, как создать базовый PHP-скрипт для вставки данных, а также HTML-форму для приема пользовательского ввода с веб-страницы и передачи его PHP-скрипту.

Требования

  • Облачный сервер под управлением Linux (любой дистрибутив)
  • Apache, MySQL/MariaDB и PHP установлены и запущены.
Примечание

Apache, MySQL/MariaDB и PHP установлены и запущены по умолчанию в стандартной установке. Если ваш сервер был создан с минимальной установкой, вам необходимо установить и настроить Apache, MySQL/MariaDB и PHP, прежде чем продолжить.

Создание базы данных MySQL/MariaDB и пользователя

В этом руководстве мы создадим веб-страницу для воображаемого ресторана. Веб-страница позволит клиентам оставлять отзывы о ресторане.

Войдите в клиент MySQL/MariaDB с командной строкой:

mysql -u root -p

Создайте базу данных для отзывов:

CREATE DATABASE reviews;

Переключитесь на эту базу данных:

USE reviews;

Для этого примера мы создадим только одну таблицу. В ней будет три поля:

  • Поле ID: Оно будет настроено на автоинкремент.
  • Имя рецензента: текстовое поле с ограничением в 100 символов.
  • Звездный рейтинг: числовая оценка от 1 до 5 TINYINT.
  • Подробности рецензии: Текстовое поле с ограничением примерно в 500 слов. VARCHAR(4000)

Создайте таблицу:

CREATE TABLE user_review (
  id MEDIUMINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  reviewer_name CHAR(100),
  star_rating TINYINT,
  details VARCHAR(4000)
  ); 

В целях безопасности всегда лучше создавать уникального пользователя для каждой базы данных, особенно если доступ к этой базе данных будет осуществляться с веб-сайта.

Следующая команда создаст пользователя review_site с паролем JxSLRkdutW и предоставит ему доступ к базе данных отзывов:

GRANT ALL ON reviews.* to review_site@localhost IDENTIFIED BY 'JxSLRkdutW';

Создание HTML-формы веб-страницы

Создайте файл reviews.html в вашем веб-пространстве и откройте его для редактирования. Например, для создания файла в /var/www/html команда выглядит следующим образом:

sudo nano /var/www/html/reviews.html

Поместите следующее содержимое в этот файл:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <body>

  <p>Let us know how we're doing!</p>

  <form action="addreview.php" method="POST">

      Your name: <input type="text" name="reviewer_name"><br><br>

      How many stars would you give us? 
        <select name="star_rating">
          <option value="1">1 star</option>
          <option value="2">2 stars</option>
          <option value="3">3 stars</option>
          <option value="4">4 stars</option>
          <option value="5">5 stars</option>
        </select><br><br>

      Your review: <br>
        <textarea name="details" rows="10" cols="30"></textarea><br><br>

      <input type="submit" value="Submit" name="submit">

  </form>

</body>
</html>

Несколько замечаний по поводу этой базовой HTML-формы:

  • Эта форма использует метод POST для передачи данных PHP-скрипту addreview.php.
  • Имя каждого поля ввода будет использовано в качестве имени переменной PHP на следующем шаге. Обычно лучше использовать имя поля таблицы базы данных для этих значений.
  • Никогда не доверяйте вводимым пользователем данным. В данном примере для оценки звезды нам требуется число от 1 до 5. Если бы мы попросили пользователей вручную ввести их звездный рейтинг, то неизбежно люди ввели бы не то, что нужно. Когда это возможно, лучше попросить пользователей выбрать из выпадающего меню с уже заполненными правильными значениями.

Создание PHP-скрипта

Создайте файл addreview.php в вашем веб-пространстве и откройте его для редактирования. Например, для создания файла в /var/www/html команда будет следующей:

sudo nano /var/www/html/addreview.php

Каждый PHP-скрипт должен начинаться с открывающего тега PHP:

<?php

Далее добавляем блок подключения к MySQL/MariaDB с указанием местоположения сервера (localhost), имени базы данных, имени пользователя и пароля базы данных.

$hostname = "localhost";
$username = "review_site";
$password = "JxSLRkdutW";
$db = "reviews";

Затем мы добавляем секцию для подключения к базе данных и выдаем ошибку, если подключение не удалось:

$dbconnect=mysqli_connect($hostname,$username,$password,$db);

if ($dbconnect->connect_error) {
  die("Database connection failed: " . $dbconnect->connect_error);
}

Далее мы «переводим» данные из HTML-формы в переменные PHP:

if(isset($_POST['submit'])) {
  $reviewer_name=$_POST['reviewer_name'];
  $star_rating=$_POST['star_rating'];
  $details=$_POST['details'];

Затем вставляем эту информацию в базу данных:

  $query = "INSERT INTO user_review (reviewer_name, star_rating, details)
  VALUES ('$reviewer_name', '$star_rating', '$details')";

Добавьте вложенный оператор if, который выдаст сообщение об ошибке, если процесс завершится неудачей, или поблагодарит пользователя за его отзыв, если процесс завершится успешно:

    if (!mysqli_query($dbconnect, $query)) {
        die('An error occurred when submitting your review.');
    } else {
      echo "Thanks for your review.";
    }

И, наконец, закройте открывающий оператор if и добавьте закрывающий тег PHP:

}
?>
Примечание

Если вы получите сообщение об ошибке «Не удалось установить соединение с базой данных: Access denied for user ‘review_site’@’localhost’ (using password: YES)», вы можете проверить регистрационные данные, войдя в MySQL/MariaDB из командной строки с помощью команды:

mysql -u review_site -p reviews

Чтобы проверить скрипт, посетите сайт reviews.html в браузере и отправьте отзыв. Затем войдите в базу данных отзывов с помощью клиента MySQL/MariaDB из командной строки:

mysql -u root -p reviews

Используйте SELECT * FROM user_review для просмотра всего содержимого таблицы:

MariaDB [reviews]> SELECT * FROM user_review;
+----+---------------+-------------+---------------------------------------------------------+
| id | reviewer_name | star_rating | details                                                 |
+----+---------------+-------------+---------------------------------------------------------+
|  1 | Ben           |           5 | Love the calzone!                                      |    
|  2 | Leslie        |           1 | Calzones are the worst.                              |
+----+---------------+-------------+---------------------------------------------------------+
2 rows in set (0.00 sec)

Полный текст PHP-скрипта:

<?php

$hostname = "localhost";
$username = "review_site";
$password = "JxSLRkdutW";
$db = "reviews";

$dbconnect=mysqli_connect($hostname,$username,$password,$db);

if ($dbconnect->connect_error) {
  die("Database connection failed: " . $dbconnect->connect_error);
}

if(isset($_POST['submit'])) {
  $reviewer_name=$_POST['reviewer_name'];
  $star_rating=$_POST['star_rating'];
  $details=$_POST['details'];

  $query = "INSERT INTO user_review (reviewer_name, star_rating, details)
  VALUES ('$reviewer_name', '$star_rating', '$details')";

    if (!mysqli_query($dbconnect, $query)) {
        die('An error occurred. Your review has not been submitted.');
    } else {
      echo "Thanks for your review.";
    }

}
?>
  • Веб-разработка

    Оцените статью
    cdelat.ru
    Добавить комментарий