2016-07-26 66 views
0

空白阵列()里面我想只存储在MySQL表,但问题映像名称是它的上传空白阵列,并给予错误只需插入在MySQL错误

数组字符串转换。

if(isset($_POST['prd_submit']) && isset($_FILES['prd_image'])){ 
// Define Input Variables 
    $name = user_input($_POST['prd_name']); 
    $detail = user_input($_POST['prd_detail']); 
    $image = $_FILES['prd_image']; 
    $buy_link = user_input($_POST['prd_link']); 
    $price = user_input($_POST['prd_price']); 
    $category = $_POST['prd_category']; 
    $country = $_POST['prd_country']; 
    // Control Error Inputs 
    if(empty($name)){ 
     $name_err = "Name is missing"; 
    } 
    if(empty($detail)){ 
     $detail_err = "Detail is missing"; 
    } 
    if(empty($price)){ 
     $price_err = "Price is missing"; 
    } 
    if(empty($buy_link)){ 
     $buy_link_err = "Link is missing"; 
    } 
    // File Upload Function 
    $OutFiles = array(); 
    foreach($image as $Index=>$Items){ 
     foreach($Items as $Key=>$Item){ 
      $OutFiles[$Key][$Index] = $Item; 
     } 
    } 
    if($OutFiles[0]['error']){ 
     $image_err = $Errors[$OutFiles[0]['error']]; 
    }else{ 
     foreach($OutFiles as $Index=>$File){ 
      $UploadDir = $DocRoot.'/upload/'; 
      $imageName = $File['name']; 
      //GETTING FILE EXTENTION 
      $file_ext = explode('.',$imageName); 
      $file_ext = $file_ext[count($file_ext)-1]; 
      //FILE NAME 
      $filename = (rand()).'-'.(time()).'.'.$file_ext; 
      //FILE EXTENTION ERROR 
      if($file_ext != "jpg" && $file_ext != "png" && $file_ext != "jpeg" && $file_ext != "gif"){ 
       $error = "Sorry, only JPG, JPEG, PNG & GIF files are allowed."; 
      }elseif(move_uploaded_file($File['tmp_name'],$UploadDir.$filename)){ 
       $OutFiles[$Index]['name'] = $filename; 
       $uploadok++; 
      }elseif($uploadok == 0){ 
       $error = "Sorry File is Not Upload"; 
      }else{ 
       $uploadok--; 
       $error = "Sorry File is Not Upload"; 
      } 
     } 
    } 
    // Insert DB 
    if($name_err == '' && $detail_err == '' && $image_err == '' && $price_err == '' && $buy_link_err == ''){    
     $Code = 0; 
     try{ 
      $insert_data = ("INSERT INTO product (name,country,detail,image,price,buy_link,category,date_posted) VALUES ('$name','$country','$detail','$image','$price','$buy_link','$category','$date')"); 
      $insert_data = $conn->query($insert_data); 
     }catch(PDOException $E){    
      $Code = $E->getCode(); 
     } 
     if($Code == 0){ 
      $error = "<div class='alert alert-success'>Your Product Registration Request Has Submitted!</div>"; 
     }elseif($Code == 23000){ 
      $error = "<div class='alert alert-info'>Duplicate Entry</div>"; 
     }else{ 
      $error = "Unabel to enter data"; 
     } 
    } 

得多搞不清什么事儿,我做错了它,如果破灭数组,但我怎么能爆我只需要名字。

回答

1

更改$image$filename您的INSERT查询。

因为$image = $_FILES['prd_image'];是一个数组,您想存储刚刚上传到upload文件夹的文件名。因此,使用$filename这是使用elseif(move_uploaded_file($File['tmp_name'],$UploadDir.$filename)){

查询

$insert_data = "INSERT INTO product (name,country,detail,image,price,buy_link,category,date_posted) VALUES ('$name','$country','$detail','$filename','$price','$buy_link','$category','$date')"; 

上传多个文件上传:将您的INSERT查询里面foreach。它会在每次成功上传时插入到表格中。

foreach ($OutFiles as $Index => $File) { 
    $UploadDir = $DocRoot . '/upload/'; 
    $imageName = $File['name']; 
    //GETTING FILE EXTENTION 
    $file_ext = explode('.', $imageName); 
    $file_ext = $file_ext[count($file_ext) - 1]; 
    //FILE NAME 
    $filename = (rand()) . '-' . (time()) . '.' . $file_ext; 
    //FILE EXTENTION ERROR 
    if ($file_ext != "jpg" && $file_ext != "png" && $file_ext != "jpeg" && $file_ext != "gif") { 
    $error = "Sorry, only JPG, JPEG, PNG & GIF files are allowed."; 
    } elseif (move_uploaded_file($File['tmp_name'], $UploadDir . $filename)) { 
    $OutFiles[$Index]['name'] = $filename; 
    $insert_data = "INSERT INTO product (name,country,detail,image,price,buy_link,category,date_posted) VALUES ('$name','$country','$detail','$filename','$price','$buy_link','$category','$date')"; 
    $insert_data = $conn->query($insert_data); 
    $uploadok++; 
    } elseif ($uploadok == 0) { 
    $error = "Sorry File is Not Upload"; 
    } else { 
    $uploadok--; 
    $error = "Sorry File is Not Upload"; 
    } 
} 

而且,取出try/catch下面为现在它上传插入

+0

它是数据库中的更新文件名,但只有一个图像名称,因为我上传了10 –

+0

我没有得到它。请详细说明一次@MuhammadHamzaNisar –

+0

它现在只更新一个图像名称。但我上传多个图像,它只在数据库中插入一个图像名称 –