PHP вставить данные формы и загрузить файл в таблицу MySQL - PullRequest
0 голосов
/ 08 января 2019

Я пытаюсь создать форму, которая вставляет данные пользователя в таблицу базы данных и загружает файл, однако я не могу понять, как добавить файл в базу данных. Данные формы не входят в проблему просто не файл. Любая помощь будет оценена.

Форма PHP:

<form method="post" action="index.php" id="frm_add" enctype="multipart/form-data">
      <input type="hidden" value="add" name="action" id="action">
              <div class="form-group">
                <label for="medID" class="control-label">ID</label>
                <input type="hidden" class="form-control" id="medID" name="medID"/> 
              </div>
      <div class="form-group">
                <label for="emp_id" class="control-label">Employee No:</label>
                <input type="text" class="form-control" id="emp_id" name="emp_id"/>
              </div>
              <div class="form-group">
                <label for="name" class="control-label">Full Name:</label>
                <input type="text" class="form-control" id="name" name="name"/>
              </div>
      <div class="form-group">
                <label for="title" class="control-label">Job Title:</label>
                <input type="text" class="form-control" id="title" name="title"/>
              </div>
      <div class="form-group">
        <label for="documents" class="control-label">Supporting Documents:</label>
        <input type="file" name="documents" class="form-control">
              </div>
        <div class="modal-footer">
            <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
            <button type="button" id="btn_add" class="btn btn-primary">Save</button>
        </div>          
</form>

insert.php

    <?php
    //include connection file 
    include_once("connection2.php");

    $db = new dbObj();
    $connString =  $db->getConnstring();

    $params = $_REQUEST;

    $action = isset($params['action']) != '' ? $params['action'] : '';
    $empCls = new Student($connString);

    switch($action) {
     case 'add':
        $empCls->insertStudent($params);
     break;
     case 'edit':
        $empCls->updateStudent($params);
     break;
     case 'delete':
        $empCls->deleteStudent($params);
     break;
     default:
     $empCls->getStudents($params);
     return;
    }

    class Student {
    protected $conn;
    protected $data = array();
    function __construct($connString) {
        $this->conn = $connString;
    }

    public function getStudents($params) {

        $this->data = $this->getRecords($params);

        echo json_encode($this->data);
    }
    function insertStudent($params) {
        $data = array();
        $sql = "INSERT INTO `employee` (emp_id, name, title, documents) VALUES('" . $params["emp_id"] . "', '" . $params["name"] . "','" . $params["title"] . "', '" . $params["documents"] . "');  "; 
echo $result = mysqli_query($this->conn, $sql) or die("error to insert student data");
}

Что я делаю не так, что мне нужно добавить в документы? Любая помощь будет оценена.

Спасибо

1 Ответ

0 голосов
/ 08 января 2019

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

$info = pathinfo($_FILES['userFile']['name']);
$ext = $info['extension']; // get the extension of the file
$newname = "newname.".$ext; 

$target = 'images/'.$newname;
move_uploaded_file( $_FILES['userFile']['tmp_name'], $target);

Код выше отсюда: Как загрузить и сохранить файлы с желаемым именем

Итак, вам нужно сохранить имя в вашей базе данных, а не просто получить доступ к этому имени, указав путь к этому файлу с именем «Имя»

...