【问题标题】:How to store image file in phpmyadmin?如何在 phpmyadmin 中存储图像文件?
【发布时间】:2019-07-25 04:01:58
【问题描述】:

我创建了一个表单并希望将所有信息存储在 PHPMyAdmin 中。我设法存储了其他信息,但没有存储图像文件。 PHPMyAdmin 中的 image 列下没有任何内容,即使在我提交表单时它声明已提交。

form2.php

<!DOCTYPE html>
<html>
<head>

</head>
<h1>Found Items Handover</h1>

    <br>

    <div class="container">
        <div class="row">
            <h2>1. Details of Handover Personnel </h2>
        </div>


<form action="insert2.php" method="post" enctype="multipart/form-data">
 <div class="row input-container">
            <div class="col-md-6 col-sm-12">
                <div class="styled-input">
                    <input type="text" name="name"required />
                    <label>Staff Name</label>
                </div>
            </div>
            <div class="col-md-6 col-sm-12">
                <div class="styled-input" style="float:right;">
                    <input type="text" name="staffno" required />
                    <label>Staff Number</label>
                </div>
            </div> <br>
                <div>
                  <label>Attachment:</label><input type='file' name='file'><br>
                </div>
            </div>


<br><input type="submit" name="submit" value="submit">
</form>

inser2.php

<?php

    $con= mysqli_connect('127.0.0.1','root','','satsform1');

    if(!$con)
    {
        echo 'Not Connected To Server';
    }

    if(!mysqli_select_db($con,'satsform1'))
    {
        echo 'Database Not Selected';
    }

    $name = $_POST['name'];
    $staffno = $_POST['staffno'];







    $sql = "INSERT INTO handover (name,staffno) 
    VALUES ('$name','$staffno')";

    if(isset($_POST['submit'])){

  $name = $_FILES['file']['name'];
  $target_dir = "upload/";
  $target_file = $target_dir . basename($_FILES["file"]["name"]);

  // Select file type
  $imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));

  // Valid file extensions
  $extensions_arr = array("jpg","jpeg","png","gif");

  // Check extension
  if( in_array($imageFileType,$extensions_arr) ){

     // Insert record
     $query = "insert into images(name) values('".$name."')";
     mysqli_query($con,$query);

     // Upload file
     move_uploaded_file($_FILES['file']['tmp_name'],$target_dir.$name);

  }

}

    if(!mysqli_query($con,$sql))
    {
        echo 'Not Submitted';
    }
    else
    {
        echo 'Submitted';
    }


?>

我希望在提交表单时将图像的 URL 存储在 PHPMyAdmin 中。

【问题讨论】:

  • 你不能存储在phpmyadmin中。它是基于 Web 的 MySQL 浏览器的名称。
  • 你的代码有什么问题?有任何错误信息吗?
  • 顺便了解一下prepared statements以防止sql注入。
  • 在不了解数据库结构的情况下调试代码有点困难。首先,请尝试检查in_array($imageFileType, $extensions_arr) 条件并确保它正常工作,然后请检查insert into images(name) ... 查询,请在此查询中添加一些虚拟数据并确保那里一切正常。

标签: php sql phpmyadmin


【解决方案1】:

请在 insert2.php 文件中插入以下代码,并使用您各自的变量和文件名。

<?php

$con= mysqli_connect('localhost','root','','join');

if(!$con)
{
echo 'Not Connected To Server';
}

if(!mysqli_select_db($con,'join'))
{
echo 'Database Not Selected';
}
$target_dir = "uploads/";
echo "<br>";
$target_file = $target_dir . basename($_FILES["file"]["name"]);
echo "<br>";

$name = $_POST['name'];
$staffno = $_POST['staffno'];


// get details of the uploaded file
$fileTmpPath = $_FILES['file']['tmp_name'];
$fileName = $_FILES['file']['name'];
$fileSize = $_FILES['file']['size'];
$fileType = $_FILES['file']['type'];
$fileNameCmps = explode(".", $fileName);
$fileExtension = strtolower(end($fileNameCmps));
$allowedfileExtensions = array('jpg', 'gif', 'png','jpeg');
if (in_array($fileExtension, $allowedfileExtensions)) {



if(move_uploaded_file($_FILES['file']['tmp_name'], $target_file)) { 
echo "File uploaded successfully!"; 

$query = "INSERT INTO user (image) 
VALUES ('$target_file')";
mysqli_query($con,$query);
if(!mysqli_query($con,$query))
{
echo 'Not Submitted';
}
else
{
echo 'Submitted';
}

} else{ 
echo "Sorry, file not uploaded, please try again!"; 
} 

}





?>

【讨论】:

  • 永远不要建议任何人使用连接的 SQL 字符串。始终使用参数/准备好的语句
猜你喜欢
  • 2017-04-05
  • 2012-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多