2014-01-28 60 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_已被弃用,你确实应该使用准备好的语句。