[英]php mysql multiple upload last insert id for loop
我將輸入表單插入兩個不同的表中。 第一個表用於信息,另一個表用於信息的圖像。
當我提交信息時,我想在單獨的表中的第一張表的每一行上載多張圖像,並且還將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();
?>
$b=$pdo->prepare(" INSERT INTO `table1` SET `address`=:address, `contact`=:contact ");
$b->bindParam(":address",$address);
$b->bindParam(":contact",$contact);
$b->execute();
$LastId = $pdo->lastInsertId();
if($LastId > 0){
$b=$pdo->prepare(" INSERT INTO `table2` SET `pictureID`=:pictureID, `filepath`=:filepath ");
$b->bindParam(":pictureID",$LastId);
$b->bindParam(":filepath",$filepath);
$b->execute();
}
最后想通了。 出現問題的是last_insert_ID。 必須在For循環外聲明Last_instert_ID。
$locationID=mysql_insert_id($conn);
在第一個插入查詢的正下方添加了上方。
$sql="INSERT INTO $tbl_location(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);
$locationID=mysql_insert_id($conn);
for($i=0; $i<count($_FILES['image']['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))
{
$sql2="INSERT INTO $tbl_image(user_ID, Location_ID, file) VALUES('$userID', '$locationID', '$final_file')";
$result = mysql_query($sql2);
?>
<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
}
}
// how to upload multiple image in database but image save in folder with upload table with last insert id with loop // table1 - table1 ID | field1 | field2 table2 - upload pictureID | ID | uploadimage <?php include("config.php"); if(isset($_POST['submit'])){ $field1 =$_POST['field1']; $field2 =$_POST['field2']; $sql=mysql_query("INSERT INTO table1(field1,field2) VALUES ('field1','field2')"); // insert record table 1 if($sql){ $last = mysql_insert_id(); } if(isset($_FILES['uploadimage']['name'])) // uploadimage file name and table column name same used here { $file_name_all=""; for($i=0; $i<count($_FILES['uploadimage']['name']); $i++) { $tmpFilePath = $_FILES['uploadimage']['tmp_name'][$i]; if ($tmpFilePath != "") { $path = "uploadimages/"; // create folder name $name = $_FILES['uploadimage']['name'][$i]; $size = $_FILES['uploadimage']['size'][$i]; list($txt, $ext) = explode(".", $name); $file= time().substr(str_replace(" ", "_", $txt), 0); $info = pathinfo($file); $filename ='image'. $file.".".$ext; } if(move_uploaded_file($_FILES['uploadimage']['tmp_name'][$i], $path.$filename)) { $sql_image=mysql_query("insert into upload(ID,uploadimage) values('".$last."','".$filename."')"); //insert record table 2(upload) } } } } ?> <form method="post" enctype="multipart/form-data"> <label>field - 1</label><input type="text" name="field1"> <label>field - 2</label><input type="text" name="field2"> <label>mutiple image upload</label> <input id="uploadimage" type="file" name="uploadimage[]" multiple accept="image/*" /> <button type="submit" name="submit">submit</button> </form>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.