2014-01-28 90 views
0

我已經創建並驗證了for循環的圖片上傳。我現在正嘗試將這些值添加到數據庫中,並將其他值先前存儲在網站較早部分的會話中。PHP爲循環添加數據庫值

for循環

for($i=1; $i<=$items; $i++) { 
    $file_size = $_FILES["photo{$i}"]['size']; 
    $file_name = $_FILES["photo{$i}"]['name']; 
    $file_extn = strtolower(end(explode('.', $file_name))); 
    $file_temp = $_FILES["photo{$i}"]['tmp_name']; 
    $allowed = array('jpg', 'jpeg', 'gif', 'png'); 

    if (in_array($file_extn, $allowed) === false) { 
     echo '<div class="alert alert-danger">[Photo '.$i.'] Format <strong>NOT</strong> acceptable. '; 
     echo 'Accepted formats: '. implode(', ', $allowed).'</div>'; 
    } elseif($file_size > 1048576) { 
     echo '<div class="alert-danger">[Photo '.$i.'] Image is too big. Maximium file size is 1MB.</div>'; 
    } else { 
     // add values to database 
    } 
} 

我這是怎麼打算的所有值插入到數據庫

$temp_data = array(
      'name'   => ucwords($_SESSION['name']), 
      'email'   => strtolower($_SESSION['email']), 
      'delivery'  => strtolower($_SESSION['delivery']), 
      'item'   => sanitize($_GET['item']), 
      'price'   => sanitize(($_GET['item'])*4.99), 
      'time_now'  => date('Y-m-d H:i:s'), 
      'time_end'  => date('Y-m-d H:i:s', strtotime("+15 day")), 
      'photo1'   => $file_path 
     ); 

insert_temp($temp_data); 

這是insert_temp函數的代碼。

function insert_temp($temp_data) { 
array_walk($temp_data, 'array_sanitize'); 

$fields = '`' . implode('`, `', array_keys($temp_data)) . '`'; 
$data = '\'' . implode('\', \'', $temp_data) . '\''; 
mysql_query("INSERT into `temp` ($fields) VALUES ($data)"); 

}


這就是問題所在。我想插入先前已存儲爲會話的值,並將圖像存儲在數據庫的for循環中。我怎樣才能做到這一點,而不是使用for循環一遍又一遍地將相同的值插入到數據庫中?

提前許多感謝,哈利

回答

0

就我所見,用戶正在「訂購」一個包含數字(「item」)和價格以及照片和他的電子郵件和名稱的訂單項。這樣的訂單項的標識是什麼?如果是用戶電子郵件,則在其上設置主鍵並進行更新,而不是插入(如果存在)。

讓自己熟悉「insert ... on duplicate key

0

好像你必須改變你的架構。

製作一個單獨的表中的照片,並使用一個主鍵引用的數據復位(把ID的會話數據)

而且,我是失職,如果我沒有點破mysql_已被棄用,你確實應該使用準備好的語句。