こんばんは。
今回、複数画像をアップロードして、DBに登録したいと考えています。
複数画像をアップロードするまでうまく行っていましたが、DBへ登録するまでうまくいけませんでした。
DBの設計は、単純に
create table painting ( id int not null auto_increment, gazo varchar(30), primary key(id) );
のようにしてみました。
ソースコードは
gallery.php
<?php session_start(); ?> <div class="staff_add"> <?php //errorがあったら表示 if(isset($_SESSION['error'])){ foreach($_SESSION['error'] as $value){ echo '<span class="error">' . h($value) . '</span>' . '\n'; } } ?> <form action="ImageUploader.php" method="post" enctype="multipart/form-data"> Send these files:<br /> <input type="hidden" name="MAX_FILE_SIZE" value="300000" /> <input name="userfile[]" type="file" multiple/><br /> <--- ここにmultiple指定 <input type="submit" value="Send files" /> </div>
ImageUploader.php
<?php session_start(); if($_SERVER["REQUEST_METHOD"] == "POST"){ $files = $_FILES['userfile']['name']; var_dump($files); $count = count($_FILES['userfile']['name']); for ($i=0; $i<$count; $i++) { if (is_uploaded_file($_FILES["userfile"]["tmp_name"][$i])) { if($_FILES["userfile"]["size"][$i] > 1000000){ $error[] = '画像サイズが大きすぎる!'; }else{ move_uploaded_file($_FILES["userfile"]["tmp_name"][$i],"files/" . $_FILES["userfile"]["name"][$i]); } } else { echo "ファイルが選択されていません。<br>"; } } $_SESSION['error'] = $error; //error数の確認 if(count($error) > 0){ header('Location: ./gallery.php'); //確認画面を表示 }else{ ?> <div class="staff_add"> <form action="pro_add_done.php" method="post"> <input type="hidden" name="userfile[]" value="<?php echo $files; ?>" multiple> <!--<p><img src="./images/<?php echo h($gazou['name']); ?>"></p>--> <div> <input type="button" onclick="history.back()" value="戻る"> <input type="submit" value="確認"> </div> </form> </div> <?php } }
Imgdone.php
コード <?php session_start(); require '../lib/functions.php'; require '../header.php'; if($_SERVER["REQUEST_METHOD"] !== "POST"){ die("不正アクセス"); } //DBへ接続 try{ //変数にpostされた変数を代入します $gazou_name = h($_FILES['userfile']); var_dump($gazou_name); $pdo = new PDO('mysql:host=localhost;dbname=boren;charset=utf8', 'root', ''); $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES,false); $sql = 'insert into painting(gazo) values(?)'; for($i=1; $i<count($gazou_name); $i++){ $product = $pdo->prepare($sql); $product->bindValue(1, $gazou_name[$i]); } // $product = $pdo->prepare($sql); // $product->bindValue(1, $gazou_name); $product->execute(); //var_dump(); $pdo = null; }catch(Exception $e){ die('接続エラー:' . $e->getMessage()); } ?>
複数画像をDBに登録するなら、DBの仕様はこのような感じだとダメのかしら、どのように考えれば良いでしょうか?
すみませんが、どなた方ご教示お願い致します。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/11/30 14:48