皆様へのご挨拶、
行のコピーに関する質問を確認していますが、解決策が見つからないか、間違って検索しています。
複数のファイルをアップロードし、アップロードプロセス中に行が同時に作成される2つのテーブルにいくつかの情報を保存しようとしています。
「media」と呼ばれる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」も「media」テーブルにコピーしたいと思います。
結果はアップロード後になります。
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>