Загрузите файл PDF в базу данных MySQL для нескольких записей с помощью PHP

Опубликовано: 9 Августа, 2022

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

В этой статье мы увидим, как мы можем загружать PDF-файлы в базу данных MySQL с помощью PHP.

Подход: убедитесь, что на вашем компьютере установлены XAMPP или WAMP. В этом уроке мы будем использовать сервер WAMP.

Создание базы данных и таблицы:

Сначала мы создадим базу данных с именем geeksforgeeks . Вы можете использовать существующую базу данных или создать новую. Создайте таблицу с именем « pdf_data » с 3 столбцами для хранения данных. Обратитесь к следующему снимку экрана для структуры таблицы.

Скопируйте и вставьте следующий код в панель SQL вашего PHPMyAdmin .

CREATE TABLE IF NOT EXISTS `pdf_data` (
  `id` int(50) NOT NULL AUTO_INCREMENT,
  `username` varchar(50) NOT NULL,
  `filename` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Мы будем использовать Bootstrap для использования адаптивной сетки Bootstrap. Ниже приведен код для включения ссылки Bootstrap CDN в заголовок HTML-кода.

<link rel=”stylesheet” href=”https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css”>

  • dbcon.php: этот код демонстрирует подключение нашего приложения к базе данных.

PHP




<?php
    $host = "localhost";
    $user = "root";
    $password = "";
    $database = "geeksforgeeks";
 
    $con = mysqli_connect($host, $user, $password, $database);
 
    if (!$con){
        ?>
            <script>alert("Connection Unsuccessful!!!");</script>
        <?php
    }
?>

Создание папки и файлов:

Теперь мы создадим папку с именем « pdf ». Файлы, загруженные клиентом на сервер, будут храниться в этой папке. Создайте index.php и style.css . Сохраните основную папку проекта (например, GeeksForGeeks) в папке « C://wamp64/www/ », если вы используете WAMP, или в папке « C://xampp/htdocs/ », если вы используете сервер XAMPP соответственно. . Структура папок должна выглядеть следующим образом:

Создание формы: с формой HTML мы собираем данные от пользователя, разрешая загрузку вложенного файла .pdf.

Фрагмент кода HTML: Ниже приведен исходный код HTML для формы HTML. В теге HTML <form> мы используем «enctype='multipart/form-data», который представляет собой тип кодирования, позволяющий отправлять файлы с помощью метода POST. Без этой кодировки файлы не могут быть отправлены методом POST. Мы должны использовать этот enctype, если вы хотите разрешить пользователям загружать файл через форму.

HTML




<form method="post" enctype="multipart/form-data">
    <div class="form-input py-2">
        <div class="form-group">
          <input type="text" class="form-control" name="name"
                 placeholder="Enter your name" required>
        </div>                                 
        <div class="form-group">
          <input type="file" name="pdf_file"
                 class="form-control" accept=".pdf"
                 title="Upload PDF"/>
        </div>
        <div class="form-group">
          <input type="submit" class="btnRegister"
                 name="submit" value="Submit">
        </div>
   </div>
</form>

Загрузить PDF-файлы: теперь мы увидим, как мы можем загружать PDF-файлы в базу данных. В приведенном ниже коде первый блок проверяет, была ли нажата кнопка «Отправить» в форме, и проверяет, есть ли вложение в поле «pdf_file», используя функцию PHPisset().

$_FILES — это двумерный ассоциативный глобальный массив элементов, которые загружаются с помощью метода HTTP POST. Функцияmove_uploaded_file() используется для загрузки pdf-файла на сервер. Мы передаем 2 значения, имя временного файла и папку, в которой файл будет храниться. Файлы будут храниться в папке «GeeksForGeeks/pdf/», которую мы создали ранее.

PHP




<?php
    if (isset($_POST["submit"])) {
 
        $name = $_POST["name"];
 
        if (isset($_FILES["pdf_file"]["name"]))
        {
          $file_name = $_FILES["pdf_file"]["name"];
          $file_tmp = $_FILES["pdf_file"]["tmp_name"];
 
          move_uploaded_file($file_tmp,"./pdf/".$file_name);
 
          $insertquery =
          "INSERT INTO pdf_data(username,filename) VALUES("$name","$file_name")";
          $iquery = mysqli_query($con, $insertquery);
        }
        else
        {
           ?>
            <div class=
            "alert alert-danger alert-dismissible
            fade show text-center">
              <a class="close" data-dismiss="alert"
                 aria-label="close">×</a>
              <strong>Failed!</strong>
                  File must be uploaded in PDF format!
            </div>
          <?php
        }
    }
?>

Создание таблицы HTML и отображение записей:

Мы будем извлекать записи из базы данных и отображать их в таблице HTML.

Фрагмент кода HTML: Исходный код HTML для приведенной выше таблицы HTML выглядит следующим образом.

HTML




<div class="card-body">
    <div class="table-responsive">
        <table>
            <thead>
                <th>ID</th>
                <th>UserName</th>
                <th>FileName</th>
            </thead>
            <tbody>
                <?php
                    $selectQuery = "select * from pdf_data";
                    $squery = mysqli_query($con, $selectQuery);
                     
                    while (($result = mysqli_fetch_assoc($squery))) {
                ?>
                <tr>
                  <td><?php echo $result["id"]; ?></td>
                  <td><?php echo $result["username"]; ?></td>
                  <td><?php echo $result["filename"]; ?></td>
                </tr>
                <?php
                    }
                ?>
            </tbody>
        </table>               
    </div>
</div>

PHP-код:

Подход:

Сначала мы выбираем все столбцы из таблицы pdf_data, а затем выполняем запрос в $squery .

$selectQuery = "select * from pdf_data"; 
$squery = mysqli_query($con, $selectQuery);

Далее мы будем использовать цикл while для выборки всех строк таблицы и сохранения данных в $result .

while (($result = mysqli_fetch_assoc($squery)))
{
    ...
}

Извлеченные данные теперь будут отображаться по столбцам в таблице HTML с помощью <?php echo $result['id']; ?> где ' id ' — это первый столбец нашей таблицы ' pdf_data '. Точно так же мы можем получить данные для соответствующих столбцов из таблицы.

<td> <?php echo $result["id"]; ?> </td>
<td> <?php echo $result["username"]; ?> </td>
<td> <?php echo $result["filename"]; ?> </td>

Полный код: Окончательный код для загрузки файла PDF в базу данных MySQL и отображения всех записей из таблицы с помощью PHP выглядит следующим образом. Этот полный код включает в себя:

  • index.php
  • стиль.css
  • dbcon.php

PHP




<?php include "dbcon.php"; ?>
 
<!DOCTYPE html>
<html lang="en">
<head> 
    <link rel="stylesheet" href=
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <div class="container" style="margin-top:30px">
        <div class="row">
            <div class="col-lg-6 col-md-6 col-12">
              <strong>Fill UserName and Upload PDF</strong>
                <form method="post" enctype="multipart/form-data">
                    <?php
                        // If submit button is clicked
                        if (isset($_POST["submit"]))
                        {
                          // get name from the form when submitted
                          $name = $_POST["name"];                    
 
                          if (isset($_FILES["pdf_file"]["name"]))
                          {  
                          // If the ‘pdf_file’ field has an attachment
                            $file_name = $_FILES["pdf_file"]["name"];
                            $file_tmp = $_FILES["pdf_file"]["tmp_name"];
                             
                            // Move the uploaded pdf file into the pdf folder
                            move_uploaded_file($file_tmp,"./pdf/".$file_name);
                            // Insert the submitted data from the form into the table
                            $insertquery =
                            "INSERT INTO pdf_data(username,filename) VALUES("$name","$file_name")";
                             
                            // Execute insert query
                            $iquery = mysqli_query($con, $insertquery);     
 
                                if ($iquery)
                               {                            
                    ?>                                             
                                  <div class=
                                "alert alert-success alert-dismissible fade show text-center">
                                    <a class="close" data-dismiss="alert" aria-label="close">
                                      ×
                                    </a>
                                    <strong>Success!</strong> Data submitted successfully.
                                  </div>
                                <?php
                                }
                                else
                                {
                                ?>
                                  <div class=
                                "alert alert-danger alert-dismissible fade show text-center">
                                    <a class="close" data-dismiss="alert" aria-label="close">
                                      ×
                                    </a>
                                    <strong>Failed!</strong> Try Again!
                                  </div>
                                <?php
                                }
                            }
                            else
                            {
                              ?>
                                <div class=
                                "alert alert-danger alert-dismissible fade show text-center">
                                  <a class="close" data-dismiss="alert" aria-label="close">
                                      ×
                                  </a>
                                  <strong>Failed!</strong> File must be uploaded in PDF format!
                                </div>
                              <?php
                            }// end if
                        }// end if
                    ?>
                     
                    <div class="form-input py-2">
                        <div class="form-group">
                            <input type="text" class="form-control"
                                   placeholder="Enter your name" na