php - 如何上传多个图像并插入同一行mysql
问题描述
我期待着从用户上传两个或更多证书图像并连续存储在 mysql 中。我该怎么做...
这是我用来上传单个图像的代码......但是我如何修改代码以允许存储两个图像
我的addstudent.php 文件有
<span>Name : </span><input type="text" style="width:265px; height:30px;" name="name" Required /><br>
<span>Cover Letter:</span><input type="file" name="file" id="file" required ><br><br>
我的 SaveStudent.php 包含
<?php
session_start();
include('../connect.php');
$a = $_POST['name'];
// query
$file_name = strtolower($_FILES['file']['name']);
$file_ext = substr($file_name, strrpos($file_name, '.'));
$prefix = 'your_site_name_'.md5(time()*rand(1, 9999));
$file_name_new = $prefix.$file_ext;
$path = '../uploads/'.$file_name_new;
/* check if the file uploaded successfully */
if(@move_uploaded_file($_FILES['file']['tmp_name'], $path)) {
//do your write to the database filename and other details
$sql = "INSERT INTO student (name,file) VALUES (:a,h)";
$q = $db->prepare($sql);
$q->execute(array(':a'=>$a,':h'=>$file_name_new));
header("location: students.php");
}
?>
现在如何在addstudent.php 和savestudent.php 中添加一个或多个输入来上传图片。
解决方案
HTML 就像
<span>Name : </span><input type="text" style="width:265px; height:30px;" name="name" required /><br>
<span>Cover Letter:</span><input type="file" name="file[]" id="file" multiple="" required ><br><br>
在多行中插入数据
$a = $_POST['name'];
$sql = "INSERT INTO student (name) VALUES (:a)";
$q = $db->prepare($sql);
$q->execute(array(':a'=>$a));
$id = $q->lastInsertId();
if(count($_FILES)){
foreach ($_FILES['file']['name'] as $key => $fname) {
$file_name = strtolower($fname);
$file_ext = substr($file_name, strrpos($file_name, '.'));
$prefix = 'your_site_name_'.md5(time()*rand(1, 9999));
$file_name_new = $prefix.$file_ext;
$path = '../uploads/'.$file_name_new;
if(@move_uploaded_file($_FILES['file']['tmp_name'][$key], $path)) {
$sql = "INSERT INTO student_cert (student_id,file) VALUES (:id,h)";
$q = $db->prepare($sql);
$q->execute(array(':id'=>$id,':h'=>$file_name_new));
}
}
header("location: students.php");
}
在单行中插入数据(逗号分隔)
$a = $_POST['name'];
if(count($_FILES)){
$file_arr = [];
foreach ($_FILES['file']['name'] as $key => $fname) {
$file_name = strtolower($fname);
$file_ext = substr($file_name, strrpos($file_name, '.'));
$prefix = 'your_site_name_'.md5(time()*rand(1, 9999));
$file_name_new = $prefix.$file_ext;
$path = '../uploads/'.$file_name_new;
if(@move_uploaded_file($_FILES['file']['tmp_name'][$key] , $path)) {
$file_arr[] = $file_name_new;
}
}
if(count($file_arr)) {
$file_str = implode(', ', $file_arr);
$sql = "INSERT INTO student (name,file) VALUES (:a,h)";
$q = $db->prepare($sql);
$q->execute(array(':a'=>$a,':h'=>$file_str));
}
header("location: students.php");
}
推荐阅读
- c# - 多个 Blazor 应用程序,相同的托管。从第一个应用程序重定向到第二个应用程序。Azure 应用服务
- php - 用 Ajax 添加到购物车的 Woocommerce 产品的可变价格范围替换可变价格范围
- javascript - 重新加载 DOM 元素而不重新加载整个页面(修改源 html)
- java - 用户将数据传递给另一个类
- vue.js - 使用 Vue 和 Axios 渲染列表时如何解决这个问题?
- c - 如何使这段代码更短更准确这段代码只是一个基本代码如何使它更高效
- c++ - 从同一点恢复类方法而不使用 goto
- mongodb - 本地 MongoDB 服务器拒绝启动
- python - 实现特定于类但不直接使用属性的方法的最佳方法
- php - 使用回显的默认“请选择”值