我已经创建并验证了用于图像上传的for循环。我现在正尝试将这些值与以前存储在站点较早部分的会话中的其他值添加到数据库中。
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循环反复将相同值插入数据库的情况下执行此操作?
提前非常感谢,哈里
最佳答案
据我所知,用户正在“订购”一个由数字(“项目”)和价格组成的订单项以及一张价格,一张照片以及他的电子邮件和姓名。这样的订单项的标识符是什么?如果是用户电子邮件,请在其上设置主键,并进行更新而不是插入(如果存在)。
使自己熟悉“ insert ... on duplicate key”
关于php - PHP for循环向数据库添加值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21417050/