向大家问好,
我正在检查有关复制行的问题,但找不到解决方案或搜索错误。
我正在尝试上传多个文件并将一些信息存储在 2 个表中,这些表是在上传过程中同时创建的。
我有 2 个表,称为“媒体”和“pmedia”结构;
CREATE TABLE IF NOT EXISTS `media` (
`id` int(11) unsigned NOT NULL auto_increment,
`product_id` int(1) unsigned NOT NULL default '0',
`media_id` int(1) unsigned NOT NULL default '0',
`ordering` int(2) NOT NULL default '0',
PRIMARY KEY (`id`),
UNIQUE KEY `i_product_id` (`product_id`,`media_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=267 ;
和
CREATE TABLE IF NOT EXISTS `pmedia` (;
`media_id` int(11) unsigned NOT NULL auto_increment,
`file_title` char(126) NOT NULL default '',
`file_mimetype` char(64) NOT NULL default '',
PRIMARY KEY (`media_id`),
KEY `i_vendor_id` (`vendor_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=274 ;
我正在将多张图片上传到没有问题的“pmedia”;
$query="INSERT into pmedia (`file_title`,`file_mimetype`) VALUES ('$file_name','$file_type') ; ";
但同时我希望那些上传文件的自动创建列“media_id”也复制到“媒体”表..
结果应该是上传后;
EDIT2: 好的,这就是循环本身。我只是写错了。下面的代码在 Ruly 和 gaRex 的帮助和启发下工作。非常感谢。
编辑 :
这是结构,很抱歉缺少解释。(我不想在单个查询中这样做。)我应该如何实现循环?这样它只会将上传的数据写入pmedia。
<?php
if(isset($_FILES['files'])){
$errors= array();
foreach($_FILES['files']['tmp_name'] as $key => $tmp_name ){
$file_name = $_FILES['files']['name'][$key];
$file_size =$_FILES['files']['size'][$key];
$file_tmp =$_FILES['files']['tmp_name'][$key];
$file_type=$_FILES['files']['type'][$key];
if($file_size > 2097152){
$errors[]='File size must be less than 2 MB';
}
$query="INSERT into pmedia (`file_title`,`file_mimetype`) VALUES ('$file_name','$file_type') ; ";
$media_id = mysql_insert_id();
$query2="INSERT into media (`media_id`) VALUES ($media_id) ; ";
$desired_dir="user_data";
if(empty($errors)==true){
if(is_dir($desired_dir)==false){
mkdir("$desired_dir", 0700); // Create directory if it does not exist
}
if(is_dir("$desired_dir/".$file_name)==false){
move_uploaded_file($file_tmp,"$desired_dir/".$file_name);
}else{ // rename the file if another one exist
$new_dir="$desired_dir/".$file_name.time();
rename($file_tmp,$new_dir) ;
}
mysql_query($query);
mysql_query($query2);
}else{
print_r($errors);
}
}
if(empty($error)){
echo "Success";
} }
?>
<form action="" method="POST" enctype="multipart/form-data">
<input type="file" name="files[]" multiple/>
<input type="submit"/>
</form>