2016-10-22 3 views
-2

Я пытаюсь загрузить два изображения с помощью php. И добавьте их в базу данных. Каким-то образом он загружает только одно изображение, а записи в базе данных всегда имеют одинаковые значения.Ошибка загрузки изображений с помощью php

это код я использую

<?php 
include "../connect.php"; 

$name1 = $_FILES['pic1']['name']; 
$size1 = $_FILES['pic1']['size']; 

$name2 = $_FILES['pic2']['name']; 
$size3 = $_FILES['pic2']['size']; 
if(isset($_POST['name'])) 
{ 

    $extension1 = pathinfo($name1,PATHINFO_EXTENSION); 
    $array = array('png','gif','jpeg','jpg'); 
     if (!in_array($extension1,$array)){ 
      echo "<div class='faild'>".$array[0]."-".$array[1]."-".$array[2]."-".$array[3]." --> (".$name.")</div>"; 
     }else if ($size>10000000){ 
      echo "<div class='faild'>Size</div>"; 
     }else { 
      $new_image1 = time().'.'.$extension1; 
      $file1 = "images/upload"; 
      $pic1 = "$file1/".$new_image1; 
      move_uploaded_file($_FILES["pic1"]["tmp_name"],"../".$pic1.""); 
          $insert = mysql_query("update temp set pic='$pic1' ") or die("error ins");  
     } 

    $extension2 = pathinfo($name2,PATHINFO_EXTENSION); 
    $array = array('png','gif','jpeg','jpg'); 
     if (!in_array($extension2,$array)){ 
      echo "<div class='faild'>".$array[0]."-".$array[1]."-".$array[2]."-".$array[3]." --> (".$name.")</div>"; 
     }else if ($size>10000000){ 
      echo "<div class='faild'>Size</div>"; 
     }else { 
      $new_image2 = time().'.'.$extension2; 
      $file2 = "images/upload"; 
      $pic2 = "$file2/".$new_image2; 
      move_uploaded_file($_FILES["pic2"]["tmp_name"],"../".$pic2.""); 

         $insert = mysql_query("update temp set passport='$pic2'") or die("error ins"); 
      } 





} 
?> 
+0

A: Это потому, что у вас нет предложения WHERE и обновляется весь ваш db. –

+0

вам также нужно привыкнуть принимать ответы. Люди думают, что ваши другие вопросы еще не решены. Удачи вам в этом, я сказал вам, что делать. –

ответ

1

Одна из проблем, которые Вы имеете с вашим утверждением обновления. Нет инструкции 'where', в которой указывается, какая запись в базе данных должна быть обновлена, поэтому этот запрос обновляет их все. Вот почему у вас есть только последнее изображение во всех строках базы данных.

Кроме того, ваш код не очень хорош с точки зрения безопасности. Вы должны взглянуть на mysqli или pdo для подключения к базе данных и запросов, потому что MySQL устарел и удален из PHP. Также взгляните на SQL-инъекции и проверку данных. Помимо некоторых очень простых расширений и проверки размеров нет ничего, что могло бы спасти вещи. Попробуйте экранировать и проверять все пользовательские входы.

И еще один момент - взглянуть на «функции». Вы выполняете почти ту же самую часть кода, по крайней мере, дважды. И каждое изменение кода должно выполняться дважды. Идеально подходит для вызова функции, что-то вроде

function storeImage($image){ 
    // write the uploading and storing PHP here 
} 
+0

это только одна запись на базе данных, и я только хочу ее обновить, поэтому, пожалуйста, не могли бы вы помочь мне больше и рассказать мне, в чем проблема? –

+1

Я сказал вам, в чем проблема. Так же, как и Фред II, - в комментариях к вашим вопросам. Добавить, где инструкции для вашей функции обновления –