未选择图像时,将图像插入数据库错误

时间:2014-08-10 15:03:18

标签: javascript php

我使用以下代码部分来获取用户的图像:

<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:我知道我不应该在我的数据库上存储图像,但现在不是重点。谢谢!

1 个答案:

答案 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";

看看ternary operator here

同样,当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";