我试图在mysql表中上传图片,但我收到此错误“Undefined index:image”我知道有类似的问题,但找不到解决方案。
<html>
<body>
<form action="upload_file.php" method="post">
<label for="file">Filename:</label>
<input type="file" name="image" id="file"><br>
<input type="submit" name="submit" value="Submit">
</form>
</body>
</html>
$con = mysqli_connect("localhost","root","root","db");
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$image = addslashes(file_get_contents($_POST['image']['tmp_name']));
$image_name = addslashes($_POST['image']['name']);
$sql = "INSERT INTO paper1 (img) VALUES ('{$image}')";
if (!mysql_query($sql)) {
echo "Something went wrong! :(";
}
答案 0 :(得分:2)
您需要使用$_FILES['image']
代替$_POST['image']
。
$image = addslashes(file_get_contents($_FILES['image']['tmp_name']));
$image_name = addslashes($_FILES['image']['name']);
<input type="file"/>
不会在$_POST
变量中,而是在$_FILES
变量中。
您收到错误undefined index
,因为数组image
中没有名称为$_POST
的索引。
答案 1 :(得分:1)
您需要在表单标记中使用enctype="multipart/form-data"
属性
<form action="upload_file.php" method="post" enctype="multipart/form-data">
在php中,使用$_FILES
代替$_POST
答案 2 :(得分:1)
鉴于已经列出的其他问题,您要混合使用SQL函数,而$_POST
应该是$_FILES
,并且应删除('{$image}')
中的大括号。
您目前正在使用基于mysqli_*
的函数$con = mysqli_connect...
进行连接,但使用基于mysql_*
的函数执行查询;他们不混。
if (!mysql_query($sql))
$con = mysqli_connect("localhost","root","root","db");
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$image = addslashes(file_get_contents($_FILES['image']['tmp_name']));
$image_name = addslashes($_FILES['image']['name']);
$sql = "INSERT INTO paper1 (img) VALUES ('$image')";
if (!mysqli_query($con,$sql)) {
echo "Something went wrong! :(";
}
我只是不确定你想对$image_name
做什么,因为没有其他对该变量的引用。
答案 3 :(得分:0)
可能,文件输入名称不是“图像”,而您的代码需要它。