这是我的代码,顶部的HTML表单是上传图像的简单表单,PHP中的SQL命令用于上传到数据库。我遇到的问题是它似乎正在访问if(substr($ imageType,0,5)==“image”)并将“Image uploaded”输出到浏览器,但实际上没有将此图像上传到我的数据库。
我的名为blob的数据库表有三个字段; id(int(11)也是自动增量和主键),name(varchar(30))和image(blob)。
编辑:我尝试了M Miller建议的反引号,但没有运气,使用mysql_error()给了我这个错误<!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')");
解决了这个问题。
答案 0 :(得分:0)
您将空字符串传递给INT ID。没有那个我会试试。
而不是:
mysql_query("INSERT INTO 'blob' VALUES('','$imageName','$imageData')");
尝试:
mysql_query("INSERT INTO blob (name, image) VALUES('$imageName','$imageData')");