你foreach ($info as $file)里面写的根本没有意义,里面$data['YMT_pic_xx']一直在被覆盖没有其他操作,最后都得到最后一轮的值,而且你数据表里用来储存图片路径的字段应该一条就够了吧,批量上传没有固定的数目;
作为一家“创意+整合+营销”的成都网站建设机构,我们在业内良好的客户口碑。创新互联建站提供从前期的网站品牌分析策划、网站设计、做网站、网站设计、创意表现、网页制作、系统开发以及后续网站营销运营等一系列服务,帮助企业打造创新的互联网品牌经营模式与有效的网络营销方法,创造更大的价值。
应该在遍历的时候操作数据库,把每次遍历出来的值都插入到数据库,上传多少张图片就有多少行记录;
不对意外的BUG处理的情况下可以这样写,
foreach ($info as $file){
$data['YMT_pic_0'] = $file['savepath'] . $file['savename'];
$YMT - add($data);
}
define(UPLOAD_ROOT,'你的上传文件夹路径');
function fake_random_name($string,$key){
#伪代码 随便根据用户名和上传时间生成一个伪随机的文件名作为上传以后的用户名
#但解码的条件是可以根据文件名判断出文件所有者的用户名和上传时间
#需要从数据库取出用户的密匙 才能进行解密 密匙是用户名的前5个字符
#具体加密解密的代码实现 请参照PHP标准扩展库 Mcrypt扩展下的N种方法
return $fake_random_name;
}
if(!is_writbale(UPLOAD_ROOT)){
die('you need chown the dir for your uploading file,make it writable~');
}else{
move_uploaded_file($_FILES['POST过来的表单名']['tmp_name'];
/*
* 这个方法会自动调用is_upload_file()方法 检测是否是合法的http rfc1867协议上传的文件
* 当然了 你也可以限制是否是你需要的合法文件类型 $_FILE[$_POST[name]][type] 比如是否是pdf img文件 都可以
*/
$dbh = new mysqli('localhost','root','sa','your_db_name');#生成中可以include进来 DSN放到根目录以外去 保护连接文件
$sec_key = substr($_SESSION['loginname'],0,5);
#密匙
$file_name = fake_random_name($_FILES['POST过来的表单名']['tmp_name'],$sec_key);
#加密后的名字
$q_str = "insert into tb(owner,location)values($_SEESION['loginname'],UPLOAD_ROOT.DIRECTORYSLASH.$file_name))";/SQL
$dbh-query($q_str);
if($dbh-num_rows()==1) echo "上传成功,已经插入数据库文件细节(加密)";
}
当你问到这个问题的时候,其实我是不想回答的
你应该是个小白,因为 “文件地址”这个其实就是一个URL,就是一个字符串。把“
文件地址上传到数据库”,其实就是把一个字符串插入到相应的表。如果你有基础,文件都上传了获取到路径了,就等插入数据库,根本不会来问这个问题。如果你没基础,那不是我在这里三言两语甚至长篇大论能教会你的。
我只能大概说一下思路:
1、首先,建表,数据库新建一个表来存放这个文件地址
2、链接这个数据库
3、把这个“文件地址”,插到数据库里面
完了!