Php 如何将图像上传到mysql表

Php 如何将图像上传到mysql表,php,mysql,Php,Mysql,我正在尝试将.jpg图像插入mysql表,但它不起作用 它显示以下错误消息: 警告:文件\获取\内容():文件名不能为空 如何修复它 这是我的代码: <form action="image.php" method="POST" enctype="multipart/form-data"> <label>File: </label><input type="file" name="image" /> <input type="s

我正在尝试将
.jpg
图像插入mysql表,但它不起作用

它显示以下错误消息:

警告:文件\获取\内容():文件名不能为空

如何修复它

这是我的代码:

<form action="image.php" method="POST" enctype="multipart/form-data">
    <label>File: </label><input type="file" name="image" />
    <input type="submit" />
</form>


<?php
$image = addslashes(file_get_contents($_FILES['image']['tmp_name']));
$image_name = addslashes($_FILES['image']['name']);
$sql = "INSERT INTO `images` ( image,image_name) VALUES ( '$image', '$image_name')";
if (!mysql_query($sql)) { // Error handling
    echo "Something went wrong! :("; 
}

?>

文件:

首先,您应该检查您的图像列是否为BLOB类型

我对您的SQL表一无所知,但如果我尝试以自己的SQL表为例

我们得到了id(int)、image(blob)和image_name(varchar(64))

因此代码应该如下所示(假设ID始终为“1”,让我们使用这个mysql\u查询):

你在很多方面都做错了。不要使用mysql函数-它们已被弃用!使用PDO或MySQLi。您还应该考虑在磁盘上存储文件位置。使用MySQL存储图像被认为是个坏主意™. 使用像图像这样的大数据处理SQL表可能会有问题

此外,您的HTML表单也不符合标准。应该是这样的:

<form action="insert_product.php" method="POST" enctype="multipart/form-data">
    <label>File: </label><input type="file" name="image" />
    <input type="submit" />
</form>

文件:

file\u get\u contents方法不用于保存jpg图像,而是用于将文件内容读入字符串。因为如果服务器支持,它将使用内存映射技术来提高性能。因此,您应该首先在根文件夹或根文件夹中的任何位置创建一个文件夹,然后设置保存jpg图像的路径

                    <?php
    $allowedExts = array("gif", "jpeg", "jpg", "png");
    $temp = explode(".", $_FILES["image"]["name"]);
    $extension = end($temp);

    if ((($_FILES["image"]["type"] == "image/gif")
    || ($_FILES["image"]["type"] == "image/jpeg")
    || ($_FILES["image"]["type"] == "image/jpg")
    || ($_FILES["image"]["type"] == "image/pjpeg")
    || ($_FILES["image"]["type"] == "image/x-png")
    || ($_FILES["image"]["type"] == "image/png"))
    && ($_FILES["image"]["size"] < 20000)
    && in_array($extension, $allowedExts)) {
      if ($_FILES["image"]["error"] > 0) {
        echo "Return Code: " . $_FILES["image"]["error"] . "<br>";
      } else {
        echo "Upload: " . $_FILES["image"]["name"] . "<br>";
        echo "Type: " . $_FILES["image"]["type"] . "<br>";
        echo "Size: " . ($_FILES["image"]["size"] / 1024) . " kB<br>";
        echo "Temp file: " . $_FILES["image"]["tmp_name"] . "<br>";
        if (file_exists("upload/" . $_FILES["image"]["name"])) {
          echo $_FILES["image"]["name"] . " already exists. ";
        } else {
            $file_name = $_FILES["image"]["name"];
          move_uploaded_file($_FILES["image"]["tmp_name"],
          "upload/" . $file_name);
          echo "Stored in: " . "upload/" . $file_name;
          $sql = "INSERT INTO images ( image,image_name) VALUES ( '$image', '$file_name')";
            if (!mysql_query($sql)) { // Error handling
                echo "Something went wrong! :("; 
            }
        }
      }
    } else {
      echo "Invalid file";
    }
    ?> 
检查以下代码:

---HTML---


该警告是因为每次页面加载时,它都试图将记录插入数据库,即使没有发布任何内容。如果(!empty($\u FILE['image']){…}
check,请将PHP代码包装在
if(!empty($\u FILE['image']){…}中。我尝试插入jpg图像。但是它显示无效文件请用$\u文件[“image”]替换$\u文件[“file”],因为您的字段名是image。因此请使用print\r($\u文件),在这里您可以找到您的全部数据并使用它。您能告诉我错误消息是什么吗?请先使用打印文件($);死亡然后发现你们是否得到了你们的字段。我已经上传了jpg图片。但它总是打印代码底部的其他部分。回显“无效文件”;它的显示警告:move\u uploaded\u file(images/1.jpg):无法打开流:第12行的C:\wamp\www\test\image.php中没有这样的文件或目录。请确保您是否创建了文件夹images/!
                    <?php
    $allowedExts = array("gif", "jpeg", "jpg", "png");
    $temp = explode(".", $_FILES["image"]["name"]);
    $extension = end($temp);

    if ((($_FILES["image"]["type"] == "image/gif")
    || ($_FILES["image"]["type"] == "image/jpeg")
    || ($_FILES["image"]["type"] == "image/jpg")
    || ($_FILES["image"]["type"] == "image/pjpeg")
    || ($_FILES["image"]["type"] == "image/x-png")
    || ($_FILES["image"]["type"] == "image/png"))
    && ($_FILES["image"]["size"] < 20000)
    && in_array($extension, $allowedExts)) {
      if ($_FILES["image"]["error"] > 0) {
        echo "Return Code: " . $_FILES["image"]["error"] . "<br>";
      } else {
        echo "Upload: " . $_FILES["image"]["name"] . "<br>";
        echo "Type: " . $_FILES["image"]["type"] . "<br>";
        echo "Size: " . ($_FILES["image"]["size"] / 1024) . " kB<br>";
        echo "Temp file: " . $_FILES["image"]["tmp_name"] . "<br>";
        if (file_exists("upload/" . $_FILES["image"]["name"])) {
          echo $_FILES["image"]["name"] . " already exists. ";
        } else {
            $file_name = $_FILES["image"]["name"];
          move_uploaded_file($_FILES["image"]["tmp_name"],
          "upload/" . $file_name);
          echo "Stored in: " . "upload/" . $file_name;
          $sql = "INSERT INTO images ( image,image_name) VALUES ( '$image', '$file_name')";
            if (!mysql_query($sql)) { // Error handling
                echo "Something went wrong! :("; 
            }
        }
      }
    } else {
      echo "Invalid file";
    }
    ?> 
<form enctype="multipart/form-data" action="add.php" method="POST"> 
Image: <input type="file" name="photo">
<br>  
<input type="submit" value="Add">  
</form>
//This is the directory where images will be saved  
$target = "images/";  
$target = $target . basename( $_FILES['image']['name']);   
//This gets all the other information from the form  
$image_name=mysql_real_escape_string(addslashes($_FILES['image']['name']));
$image = mysql_real_escape_string(addslashes(file_get_contents($_FILES['image']['tmp_name'])));   
// Connects to your Database  
mysql_connect("YOUR_HOST", "USERNAME", "PSSWORD") or die(mysql_error()) ;  
mysql_select_db("YOUR_DATABASE") or die(mysql_error()) ;   
//Writes the information to the database  
mysql_query("INSERT INTO `product_images` VALUES ('', '$image', '$image_name')") ;   
//Writes the photo to the server  
if(move_uploaded_file($_FILES['image']['tmp_name'], $target))  {   
//Tells you if its all ok  
echo "The file ". basename( $_FILES['uploadedfile']['name']). " has been uploaded, and your information has been added to the directory";  
} else {   
//Gives and error if its not  
echo "Sorry, there was a problem uploading your file.";  }  
?>