6429
15642
我将输入表单插入两个不同的表中。第一个表用于信息,另一个表用于信息的图像。
提交信息时,我想在单独的表中的第一张表的每一行上载多张图像,并且还将last_insert_id插入到第二张表中的每张图像中。
表格1
位置编号|地址|联系信息
表2
pictureID |位置编号|文件路径
使用以下代码,它只能插入一个图像,但是会将所有图像上传到文件夹中。
<?php
include_once'dbconnect.php';
mysql_query(“ SET NAMES UTF8”);
session_start();
$ tbl_name =“ location”;
$ tbl_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,电话,电子邮件,类型,其他,描述,地址,名称,lat,lng,国家,administration_area_level_1,place_id,url,网站)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 <计数($ _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 /”;
//新文件大小(以KB为单位)
$ new_size = $ file_size / 1024;
//新文件大小(以KB为单位)
//使文件名小写
$ new_file_name = strtolower($ file);
//使文件名小写
$ 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,文件)VALUES('$ userID',LAST_INSERT_ID(),'$ final_file')”;
mysql_query($ sql);
?>
<脚本>
警报(“成功上传”);
window.location.href ='index.php?成功';

<?php
}
其他
{
?>
<脚本>
alert('上传文件时出错');
window.location.href ='index.php?fail';

<?php
}
}
如果($结果){
回显“成功”;
回声“ 
”; 回声“ 返回主页”; } 其他{ 回显“ ERROR”; } if($ result1){ 回显“上传成功”; 回声“
”; 回声“ 返回主页”; } 其他{ 回显“ ERROR”; } } ?> <?php //关闭连接 mysql_close(); ?>
$ b = $ pdo-> prepare(“插入到table1中SET SET address =:address,contact = contact
$ b-> bindParam(“:address”,$ address);
$ b-> bindParam(“:contact”,$ contact);
$ b-> execute();
$ LastId = $ pdo-> lastInsertId();
if($ LastId> 0){
$ b = $ pdo-> prepare(“插入`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,电话,电子邮件,类型,其他,描述,地址,名称,lat,lng,国家,administration_area_level_1,place_id,url,网站)
值(“ $ 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 <计数($ _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 /”;
//新文件大小(以KB为单位)
$ new_size = $ file_size / 1024;
//新文件大小(以KB为单位)
//使文件名小写
$ new_file_name = strtolower($ file);
//使文件名小写
$ 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);
?>
<脚本>
警报(“成功上传”);
window.location.href ='index.php?成功';

<?php
}
其他
{
?>
<脚本>
alert('上传文件时出错');
window.location.href ='index.php?fail';

<?php
}
}
|
//如何在数据库中上传多个图像,但如何将图像保存在带有上次插入ID且带有循环的上载表的文件夹中//
表1-表1
ID | field1 |场2
table2-上传
pictureID | ID |上传图片
<?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')”); //插入记录表1
if($ sql){
$ last = mysql_insert_id(); }
if(isset($ _ FILES ['uploadimage'] ['name']))// //此处使用的上载图像文件名和表列名相同
{
$ file_name_all =“”;
for($ i = 0; $ i <计数($ _FILES ['uploadimage'] ['name']); $ i ++)
{
$ tmpFilePath = $ _FILES ['uploadimage'] ['tmp_name'] [$ i];
如果($ tmpFilePath!=“”)
{
$ path =“ uploadimages /”; //创建文件夹名称
$ name = $ _FILES ['uploadimage'] ['name'] [$ i];
$ size = $ _FILES ['uploadimage'] ['size'] [$ i];
list($ txt,$ ext)=爆炸(“。”,$ name);
$ file = time()。substr(str_replace(“”,“ _”,$ txt),0);
$ info = pathinfo($ file);
$ filename ='图像'。 $ file。“ ... $ ext;
}
if(move_uploaded_file($ _ FILES ['uploadimage'] ['tmp_name'] [$ i],$ path。$ filename))
{
$ sql_image = mysql_query(“插入上载(ID,uploadimage)值('”。$ last。“','”。$ filename。“')”)); //插入记录表2(上传)
}
}
}
}
?>