调用函数时出现PHP未定义索引问题

3

你好,我在调用一个函数将图片上传至MySQL数据库时,一直提示未定义的索引image。

我是通过这个按钮上传图片的。

<input type="file" name="image" size="25" />
<input type ="submit" name = "Register_Btn" value ="Register">

调用此函数

if(isset($_POST['Register_Btn'])){
    uploadImage($link);
    register($link);
}

然后在pictureupload.php中,我有这个函数。
<?php
function UploadImage($link){
    if ($_FILES['image']['error'] == UPLOAD_ERR_OK){
    $image = addslashes(file_get_contents($_FILES['image']['tmp_name'])); //SQL Injection defence!
    $image_name = addslashes($_FILES['image']['name']);
    $sql = "INSERT INTO `authentication` ( `image_name`,`image`) VALUES ('{$image_name}','{$image}')";
    mysqli_query($link,$sql);
    }else{
        echo'No File Chosen';
    }   
}

?>

每次使用['image']时,都会返回Undefined index: image错误,并且在pictureupload的第4行也会显示file_get_contents(): Filename cannot be empty。如何确保它接收上传的图像数据?


你是否打印了 $_FILES 数组并检查是否获取到图像数据? - Manthan Dave
3
"SQL注入防御!",不行。 - Jonnix
2个回答

0

尝试检查您的图像是否已经上传

<?php
function UploadImage($link){
if(isset($_FILES['image']) &&!empty($_FILES['image'])){// check file is uploaded or not
    if ($_FILES['image']['error'] == UPLOAD_ERR_OK){
    $image = addslashes(file_get_contents($_FILES['image']['tmp_name'])); //SQL Injection defence!
    $image_name = addslashes($_FILES['image']['name']);
    $sql = "INSERT INTO `authentication` ( `image_name`,`image`) VALUES ('{$image_name}','{$image}')";
    mysqli_query($link,$sql);
    }
}else{
        echo'No File Chosen';
    }   
}

嗯,它似乎并没有上传,你有什么想法是什么原因造成的吗? - GregHBushnell
当我按上传时,我的意思是图像名称出现,所以它的一部分正在运作。 - GregHBushnell

0

啊哈

忘记包含

enctype="multipart/form-data"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接