php中的未定义索引错误,用于mysql db中的图像上传

时间:2014-03-03 19:05:23

标签: php

我试图在mysql表中上传图片,但我收到此错误“Undefined index:image”我知道有类似的问题,但找不到解决方案。

HTML

<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>

PHP

$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! :("; 
}

4 个答案:

答案 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)

可能,文件输入名称不是“图像”,而您的代码需要它。