【发布时间】:2019-06-03 09:55:16
【问题描述】:
我正在尝试创建一个将用户数据插入数据库表并上传文件的表单,但是我不知道如何将文件添加到数据库中。表单数据输入没有问题,只是文件没有。任何帮助,将不胜感激。
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>
插入.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");
}
我做错了什么,我需要在文档中添加什么?任何帮助将不胜感激。
谢谢
【问题讨论】:
-
请阅读SQL injection。不要使用字符串连接构建查询,而是使用prepared statements 和bound parameters。请参阅 this page 和 this post 了解一些很好的示例。
-
$_REQUEST涵盖 GET 和 POST 数组,而不是 FILES。启用错误报告,会给你一个未定义的索引。您需要在此处进行一些重写。 -
嗨,塔尔哈。在网络上,您可以研究很多关于如何使用 php 管理上传文件的示例。在这里您可以查看一个:w3schools.com/php/php_file_upload.asp 在 DB 中存储文件并不常见。如果你真的想这样做,你可以使用 blob 字段。但是您可以将它们存储在文件系统或外部存储系统中。
-
@Curlas 请避免链接到 w3schools。这是非常低质量的内容,并且通常充满严重的安全漏洞和糟糕的建议。尽可能链接到official manual,或者更高质量的教程或解释器。
-
????:“看起来您正在编写自己的 ORM。您是否考虑过使用已经编写、测试和广泛支持的 ORM,例如 RedBeanPHP、Doctrine、@987654330 @ 或Eloquent?”
标签: php mysql forms file-upload