【发布时间】:2018-01-11 15:19:13
【问题描述】:
我将输入表单插入到两个不同的表中。第一个表是信息,另一个表是信息的图像。
当我提交信息时,我想在单独的表格中的第一张表格的每一行上传多张图片,并将每个图片的last_insert_id插入到第二张表格中。
table1
location ID | address | contact information
table2
pictureID | location ID | filepath
使用以下代码,它只插入一张图片,但它会将所有图片上传到文件夹中。
<?php
include_once 'dbconnect.php';
mysql_query("SET NAMES UTF8");
session_start();
$tbl_name="location";
$tbl_image="image";
if(isset($_POST['btn-upload'])){
$name2=$_POST['name2'];
$phone=$_POST['phone'];
$email=$_POST['email'];
$type=$_POST['type'];
$other=$_POST['other'];
$description=$_POST['description'];
$address=$_POST['address'];
$name=$_POST['name'];
$lat=$_POST['lat'];
$lng=$_POST['lng'];
$country=$_POST['country'];
$administrative_area_level_1=$_POST['administrative_area_level_1'];
$place_id=$_POST['place_id'];
$url=$_POST['url'];
$website=$_POST['website'];
$sql="INSERT INTO $tbl_name(name2, phone, email, type, other, description, address, name, lat, lng, country, administrative_area_level_1, place_id, url, website) VALUES ('$name2', '$phone', '$email', '$type','$other', '$description', '$address', '$name', '$lat', '$lng', '$country', '$administrative_area_level_1', '$place_id', '$url', '$website')";
$result=mysql_query($sql);
for($i=0; $i<count($_FILES['image']['tmp_name']); $i++)
{
$file = rand(1000,100000)."-".$_FILES['image']['name'][$i];
$file_loc = $_FILES['image']['tmp_name'][$i];
$file_size = $_FILES['image']['size'][$i];
$file_type = $_FILES['image']['type'][$i];
$folder="uploads/";
// new file size in KB
$new_size = $file_size/1024;
// new file size in KB
// make file name in lower case
$new_file_name = strtolower($file);
// make file name in lower case
$final_file=str_replace(' ','-',$new_file_name);
$res=mysql_query("SELECT * FROM users WHERE userId=".$_SESSION['user']);
$userRow=mysql_fetch_array($res);
$userID=$userRow['userID'];
if(move_uploaded_file($file_loc,$folder.$final_file))
{
$sql="INSERT INTO $tbl_image(user_ID, Location_ID, file) VALUES('$userID', LAST_INSERT_ID(), '$final_file')";
mysql_query($sql);
?>
<script>
alert('successfully uploaded');
window.location.href='index.php?success';
</script>
<?php
}
else
{
?>
<script>
alert('error while uploading file');
window.location.href='index.php?fail';
</script>
<?php
}
}
if($result){
echo "Successful";
echo "<BR>";
echo "<a href='index.php'>Back to main page</a>";
}
else {
echo "ERROR";
}
if($result1){
echo "Upload Successful";
echo "<BR>";
echo "<a href='locationform.php'>Back to main page</a>";
}
else {
echo "ERROR";
}
}
?>
<?php
// close connection
mysql_close();
?>
【问题讨论】:
-
您的代码是正确的,但是在第一次成功插入图像表后,您正在重定向代码。所以你只能在图像表中插入一个。
-
由于 mysql_* 在 PHP 5.5 中已被弃用(请参阅 PHP doc),您应该真的考虑使用 PPS : Prepared Parameterized Statements。这将有助于Preventing SQL injection。 从不相信用户的数据!请在页面顶部使用
error_reporting(E_ALL); ini_set('display_errors', 1);,如果出现任何错误,请告知我们 -
此外,您不应该假设您的 sql 调用是成功的。在每个 sql 查询之后添加错误处理并打印出任何错误消息
-
那我怎么不重定向代码呢?