将blob类型的图像上传到数据库,我的代码说它正在上传图像但没有存储在数据库中

时间:2014-03-20 22:15:55

标签: php html mysql image file-upload

这是我的代码,顶部的HTML表单是上传图像的简单表单,PHP中的SQL命令用于上传到数据库。我遇到的问题是它似乎正在访问if(substr($ imageType,0,5)==“image”)并将“Image uploaded”输出到浏览器,但实际上没有将此图像上传到我的数据库。

我的名为blob的数据库表有三个字段; id(int(11)也是自动增量和主键),name(varchar(30))和image(blob)。

编辑:我尝试了M Miller建议的反引号,但没有运气,使用mysql_error()给了我这个错误
    警告:mysql_error()期望参数1是资源,布尔值在第31行的C:\ wamp \ www \ Box \ index.php中给出

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Image Upload</title>
</head>

<body>

<form action="index.php" method ="POST" enctype="multipart/form-data">
    <input type="file" name="image" /><input type="submit" name="submit" value="Upload" />
</form>

<?php

if(isset($_POST['submit']))
{
    mysql_connect("localhost", "root", "root");//password root
    mysql_select_db("content");//db name content

    $imageName = mysql_real_escape_string($_FILES["image"]["name"]);//provides protection against injection
    $imageData = mysql_real_escape_string(file_get_contents($_FILES["image"]["tmp_name"]));

    $imageType = mysql_real_escape_string($_FILES["image"]["type"]);

    if(substr($imageType,0,5) == "image")
    {
        mysql_query("INSERT INTO 'blob' VALUES('','$imageName','$imageData')");
        echo "Image Uploaded";
    }
    else
    {
        echo "Only images are allowed";
    }

}


?>

</body>
</html>

类似于BarryDevSF的解决方案,将行更改为:

mysql_query("INSERT INTO `blob` VALUES(NULL,'$imageName','$imageData')");

而不是:

mysql_query("INSERT INTO 'blob' VALUES('','$imageName','$imageData')");

解决了这个问题。

1 个答案:

答案 0 :(得分:0)

您将空字符串传递给INT ID。没有那个我会试试。

而不是:

mysql_query("INSERT INTO 'blob' VALUES('','$imageName','$imageData')");

尝试:

mysql_query("INSERT INTO blob (name, image) VALUES('$imageName','$imageData')");