我使用以下代码部分来获取用户的图像:
<p class = "images">
<label align="center" class = 'odhgies' >select up to 4 images to insert: </label>
<input type="file" name="image_1" id="image1" accept="image/*;capture=camera">
<input type="file" name="image_2" id="image2" accept="image/*;capture=camera">
<input type="file" name="image_3" id="image3" accept="image/*;capture=camera">
<input type="file" name="image_4" id="image4" accept="image/*;capture=camera">
<p>
我接受输入并将它们存储到数据库的php如下:
$image1 = $_POST['image_1'];
$image2 = $_POST['image_2'];
$image3 = $_POST['image_3'];
$image4 = $_POST['image_4'];
$sql = "INSERT INTO images (image1,image2,image3,image4) VALUES ('$image1','$image2','$image3','$image4')" ;
$result = mysqli_query($con,$sql);
if($result)
{
header("Location: success.php");
exit;
}
else
{
header("Location: fail.php");
exit;
}
如果我选择上传至少一张图片一切正常,我会存储我想要的图像,其余的都是空白的。当我选择上传非问题时会出现问题,然后我收到一条错误消息,指出image_1,image_2等是未定义的索引。任何想法都在发生,如何解决?
Ps:我知道我不应该在我的数据库上存储图像,但现在不是重点。谢谢!
答案 0 :(得分:1)
$_POST
是一个数组,如果你试图访问一个不存在的数组位置,php会抛出错误,你也可以使用sql injection。
您可以使用它为$image
变量提供默认值:
$image1 = isset($_POST['image_1']) ? $_POST['image_1'] : "null";
$image2 = isset($_POST['image_2']) ? $_POST['image_2'] : "null";
$image3 = isset($_POST['image_3']) ? $_POST['image_3'] : "null";
$image4 = isset($_POST['image_4']) ? $_POST['image_4'] : "null";
同样,当CBroe将您的表单字段标记为file
类型时,您必须通过$_FILES
全局访问它们:
$image1 = isset($_FILES['image_1']) ? $_FILES['image_1'] : "some default";
$image2 = isset($_FILES['image_2']) ? $_FILES['image_2'] : "some default";
$image3 = isset($_FILES['image_3']) ? $_FILES['image_3'] : "some default";
$image4 = isset($_FILES['image_4']) ? $_FILES['image_4'] : "some default";