[英]PHP How to update uploaded multiple file in different column in DB table
我有一个 HTML 表单来上传两个 PDF 文件。 我能够成功地将一个文件上传到一列,但不确定如何将每个 PDF 文件上传到数据库表的不同列。 下面是我的代码:
if(isset($_POST["submit"])){
$errors = array();
$uploadedFiles = array();
$extension = array("pdf");
$bytes = 5024;
$KB = 5024;
$totalBytes = $bytes * $KB;
$UploadFolder = "UploadFolder";
$counter = 0;
foreach($_FILES["files"]["tmp_name"] as $key=>$tmp_name){
$temp = $_FILES["files"]["tmp_name"][$key];
$vendor_blicense = $_FILES["files"]["name"][$key];
if(empty($temp))
{
break;
}
$counter++;
$UploadOk = true;
if($_FILES["files"]["size"][$key] > $totalBytes)
{
$UploadOk = false;
array_push($errors, $vendor_blicense." file size is larger than the 5 MB.");
echo '<script>alert("File size is larger than the 5 MB...")</script>';
}
$ext = pathinfo($vendor_blicense, PATHINFO_EXTENSION);
if(in_array($ext, $extension) == false){
$UploadOk = false;
array_push($errors, $vendor_blicense." is invalid file type. Only PDF");
echo '<script>alert("Invalid file type. Only pdf")</script>';
}
if($UploadOk == true){
if(file_exists($UploadFolder."/".$vendor_blicense) == true){
$vendor_blicense1 = uniqid().$vendor_blicense;
$success = mysqli_query($kone,$query);
$preparedStatement = $kone->prepare("UPDATE table SET vendor_blicense = :vendor_blicense WHERE vendor_id = '$send_id'");
$preparedStatement->execute([ ':vendor_blicense' => $vendor_blicense1 ]);
move_uploaded_file($temp,$UploadFolder."/".$vendor_blicense1);
array_push($uploadedFiles, $vendor_blicense1);
}
else{
$preparedStatement = $kone->prepare("UPDATE table SET vendor_blicense = :vendor_blicense WHERE vendor_id = '$send_id'");
$preparedStatement->execute([ ':vendor_blicense' => $vendor_blicense ]);
move_uploaded_file($temp,$UploadFolder."/".$vendor_blicense);
array_push($uploadedFiles, $vendor_blicense);
}
}
}
}
?>
<input type="file" id="files" name="files[]" accept=".pdf">
<input type="file" id="files2" name="files[]" accept=".pdf">
<input name="submit" type="submit" value="Submit">
``
如何获取每个输入“file”和“files2”的名称和PDF文件并提交到服务器上的数据库和Uploadfolder上的不同列? 我有这样的查询: UPDATE hobber_vendor SET vendor_blicense = :vendor_blicense AND vendor_btax = :vendor_btax WHERE vendor_id = '$send_id' 我想更新 vendor_btax 以存储来自“files2”的文件名,并将文件上传到 move_uploaded_file($ temp,$UploadFolder."/".$vendor_btax); array_push($uploadedFiles, $vendor_tax);
所以毕竟研究,故障排除,并遵循我的每一行代码。 能够通过首先将我的 HTML 代码更改为以下来解决此问题:
<input type="file" id="files" name="files['license']" accept=".pdf">
<input type="file" id="files2" name="files['tax']" accept=".pdf">
<input name="submit" type="submit" value="Submit">
然后我为每个输入获取值并将其分配给数据库中的每一列。 此外,我在 foreach 循环之外声明了uniqid()
以在用户尝试上传与服务器上的文件具有相同路径名的文件时重用。 下面是我完整的 PHP 代码:
if(isset($_POST["submit"])){
$errors = array();
$uploadedFiles = array();
$extension = array("pdf");
$bytes = 5024;
$KB = 5024;
$totalBytes = $bytes * $KB;
$UploadFolder = "UploadFolder";
$random = uniqid();
foreach($_FILES["files"]["tmp_name"] as $key=>$tmp_name){
$temp = $_FILES["files"]["tmp_name"][$key];
$filer = $_FILES["files"]["name"][$key];
$vendor_blicense = $_FILES["files"]["name"]["license"];
$vendor_btax = $_FILES["files"]["name"]["tax"];
if(empty($temp))
{
break;
}
$counter++;
$UploadOk = true;
if($_FILES["files"]["size"]["license"] > $totalBytes)
{
$UploadOk = false;
array_push($errors, $vendor_blicense." file size is larger than the 5 MB.");
echo '<script>alert("File size is larger than the 5 MB...")</script>';
}
if($_FILES["files"]["size"]["tax"] > $totalBytes)
{
$UploadOk = false;
array_push($errors, $vendor_btax." file size is larger than the 5 MB.");
echo '<script>alert("File size is larger than the 5 MB...")</script>';
}
$ext = pathinfo($vendor_blicense, PATHINFO_EXTENSION);
if(in_array($ext, $extension) == false){
$UploadOk = false;
array_push($errors, $vendor_blicense." is invalid file type. Only PDF");
echo '<script>alert("Invalid file type. Only pdf")</script>';
}
$ext = pathinfo($vendor_btax, PATHINFO_EXTENSION);
if(in_array($ext, $extension) == false){
$UploadOk = false;
array_push($errors, $vendor_btax." is invalid file type. Only PDF");
echo '<script>alert("Invalid file type. Only pdf")</script>';
}
if($UploadOk == true){
if(file_exists($UploadFolder."/".$filer)){
$filer1 = $random.$filer;
$vendor_blicense1 = $random.$vendor_blicense;
$vendor_btax1 = $random.$vendor_btax;
$success = mysqli_query($kone,$query);
$preparedStatement = $kone->prepare("UPDATE table SET vendor_blicense = :vendor_blicense, vendor_btax = :vendor_btax, vendor_tax_check = :vendor_tax_check,vendor_bstage = :vendor_bstage WHERE vendor_id = '$send_id'");
$preparedStatement->execute([ ':vendor_blicense' => $vendor_blicense1, ':vendor_btax' => $vendor_btax1, ':vendor_tax_check' => $vendor_tax_check, ':vendor_bstage' => $vendor_bstage]);
move_uploaded_file($temp,$UploadFolder."/".$filer1);
array_push($uploadedFiles, $filer1);
}
else{
$preparedStatement = $kone->prepare("UPDATE table SET vendor_blicense = :vendor_blicense, vendor_btax = :vendor_btax, vendor_tax_check = :vendor_tax_check, vendor_bstage = :vendor_bstage WHERE vendor_id = '$send_id'");
$preparedStatement->execute([':vendor_blicense' => $vendor_blicense, ':vendor_btax' => $vendor_btax, ':vendor_tax_check' => $vendor_tax_check, ':vendor_bstage' => $vendor_bstage]);
move_uploaded_file($temp,$UploadFolder."/".$filer);
array_push($uploadedFiles, $filer);
}
}
}
if($counter>0){
if(count($errors)>0)
{
echo "<b>Errors:</b>";
echo "<br/><ul>";
foreach($errors as $error)
{
echo "<li>".$error."</li>";
}
echo "</ul><br/>";
}
if(count($uploadedFiles)>0){
echo "successfully uploaded";
}
$kone->close();
}
}
else{
echo '<script>alert("Please, Select file(s) to upload!")</script>';
echo "<center>Please, Select file(s) to upload!</center>";
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.