PHPを利用して、
服のブランド名・カテゴリー・カラー・コメント(特徴)・画像
をDBに格納したいです。
PDOを利用したいのですが、この書き方ですとDBに格納できません。
表示、入力まではできるのですが、phpmyadminを確認しますと格納できていないようです。
データベース接続のコードを書くところが間違っているのかなと思っております
どのように書き換えたらいいのでしょうか。
PHP
1<?php 2session_start(); 3 $name = 'g031o050'; 4 $pass = 'g031o050'; 5 $errors = array(); 6 7 8 9 10// エラー確認 11if(!empty($_POST)) { 12 if (!isset($_POST['brand']) || $_POST['brand'] === '') { 13 $errors['brand'] = 'ブランドが入力されていません'; 14 } else { 15 $brand = htmlspecialchars($_POST['brand'], ENT_QUOTES); 16 } 17 18 if (!isset($_POST['cate']) || $_POST['cate'] === '') { 19 $errors['cate'] = 'カテゴリーが入力されていません'; 20 } else { 21 $cate = htmlspecialchars($_POST['cate'], ENT_QUOTES); 22 } 23 24 if (!isset($_POST['color']) || $_POST['color'] === '') { 25 $errors['color'] = 'カラーが入力されていません'; 26 } else { 27 $color = htmlspecialchars($_POST['color'], ENT_QUOTES); 28 } 29 30 if (!isset($_POST['comm']) || $_POST['comm'] === '') { 31 $errors['comm'] = 'ポイントが入力されていません'; 32 } else { 33 $comm = htmlspecialchars($_POST['comm'], ENT_QUOTES); 34 } 35} 36 // 画像をリサイズして保存 37if (isset($_FILES['upfile']['error']) && is_int($_FILES['upfile']['error'])) { 38 try { 39 // $_FILES['upfile']['error'] の値を確認 40 switch ($_FILES['upfile']['error']) { 41 case UPLOAD_ERR_OK: // OK 42 break; 43 case UPLOAD_ERR_NO_FILE: // ファイル未選択 44 throw new RuntimeException('ファイルが選択されていません'); 45 case UPLOAD_ERR_INI_SIZE: // php.ini定義の最大サイズ超過 46 case UPLOAD_ERR_FORM_SIZE: // フォーム定義の最大サイズ超過 47 throw new RuntimeException('ファイルサイズが大きすぎます'); 48 default: 49 throw new RuntimeException('その他のエラーが発生しました'); 50 } 51$info = @getimagesize($_FILES['upfile']['tmp_name']); 52 if (!$info = @getimagesize($_FILES['upfile']['tmp_name'])) { 53 throw new RuntimeException("[{$k}] 有効な画像ファイルを指定してください"); 54 } 55 if (!in_array($info[2], [IMAGETYPE_GIF, IMAGETYPE_JPEG, IMAGETYPE_PNG], true)) { 56 throw new RuntimeException("未対応の画像形式です"); 57 } 58// 画像処理に使う関数名 59 $create = str_replace('/', 'createfrom', $info['mime']); 60 $output = str_replace('/', '', $info['mime']); 61// 縦横比を維持、120 * 120 以下に収まるサイズを求める 62 if ($info[0] >= $info[1]) { 63 $dst_w = 120; 64 $dst_h = ceil(120 * $info[1] / max($info[0], 1)); 65 } else { 66 $dst_w = ceil(120 * $info[0] / max($info[1], 1)); 67 $dst_h = 120; 68 } 69// リサンプリング先画像リソースを生成 70 $dst = imagecreatetruecolor($dst_w, $dst_h); 71// 元画像リソースを生成 72 if (!$src = @$create($_FILES['upfile']['tmp_name'])) { 73 throw new RuntimeException("画像リソースの生成に失敗しました"); 74 } 75// getimagesize関数で得られた情報も利用してリサンプリング 76 imagecopyresampled($dst, $src, 0, 0, 0, 0, $dst_w, $dst_h, $info[0], $info[1]); 77ob_start(); 78 $output ($dst); 79 $content = base64_encode(ob_get_contents()); 80ob_end_clean(); 81imagedestroy($dst); 82 $_SESSION['content'] = $content; 83 $msg = ['green', 'ファイルは正常に読み込まれています。']; 84 } catch (RuntimeException $e) { 85 $msg = ['red', $e->getMessage()]; 86 } 87} 88 89 90// リライトするときの設定 91if(isset($_GET['action']) && $_GET['action'] === 'edit'){ 92 $brand = $_SESSION['brand']; 93 $cate = $_SESSION['cate']; 94 $color = $_SESSION['color']; 95 $comm= $_SESSION['comm']; 96} 97// エラーがなかったら、 98if(count($errors) === 0){ 99 $_SESSION['brand'] = $brand; 100 $_SESSION['cate'] = $cate; 101 $_SESSION['color'] = $color; 102 $_SESSION['comm'] = $comm; 103 } 104 105 106// 登録ボタンが押されたらインサート処理開始 107if(!empty($_POST['register'])){ 108 require_once 'dbmanager.php'; 109 try{ 110 $pdo = new PDO("mysql:host=localhost;dbname=g031o050;charset=utf8",'g031o050', 'g031o050', array(PDO::ATTR_EMULATE_PREPARES => false)); 111 $sql = 'INSERT INTO images(brand,cate,color,comm,picture) VALUES(:brand, :cate, :color, :comm,:picture)'; 112 $stmt = $pdo->prepare($sql); 113 $stmt->bindParam(':brand', $_SESSION['brand'], PDO::PARAM_STR); 114 $stmt->bindParam(':cate', $_SESSION['cate'], PDO::PARAM_STR); 115 $stmt->bindParam(':color', $_SESSION['color'], PDO::PARAM_STR); 116 $stmt->bindParam(':comm', $_SESSION['comm'], PDO::PARAM_STR); 117 $stmt->bindParam(':picture', $_SESSION['content'], PDO::PARAM_STR); 118 $stmt->execute(); 119 header('Location: thanks.php'); 120 } catch (PDOException $e) { 121 echo $e->getMessage(); 122 } 123} 124 125?> 126 127
html
1<!DOCTYPE html> 2<html> 3<head> 4 <title>画像登録画面</title> 5</head> 6<body> 7 <center> 8<?php 9// エラーメッセージ表示 10echo "<ul>"; 11foreach($errors as $value){ 12echo"<li>"; 13echo $value; 14echo"</li>"; 15} 16echo "</ul>"; 17?> 18<?php if (!isset($_POST['submit']) || $_POST['submit'] === '') : ?> 19<form enctype="multipart/form-data" method="post" action=""> 20<dl> 21<dt>ブランド<span class="required">必須</span></dt> 22<dd><input type="text" name="brand" size="35" maxlength="255" value="<?php if(isset($brand)){ echo $brand; } ?>"> 23</dd> 24<dt>カテゴリー<span class="required">必須</span></dt> 25<select name="cate" id ="pref"> 26//ここに各カテゴリーを書いています 27</select> 28<dt>カラー<span class="required">必須</span></dt> 29<dd><input type="text" name="color" size="10" maxlength="20" value=""> 30</dd> 31<dt>特徴<span class="required">必須</span></dt> 32<dd><input type="text" name="comm" size="10" maxlength="20" value=""> 33</dd> 34<dt>プロフィール画像など(GIF, JPEG, PNGのみ対応)</dt> 35<dd><input type="file" name="upfile" /></dd> 36<p><input type="submit" value="送信" name="submit"/></p> 37</dl> 38 </form> 39 40 41<?php elseif( count($errors) > 0) : ?> 42<form enctype="multipart/form-data" method="post" action=""> 43<dl> 44<dt>ブランド<span class="required">必須</span></dt> 45<dd><input type="text" name="brand" size="35" maxlength="255" value="<?php if(isset($brand)){ echo $brand; } ?>"> 46</dd> 47<dt>カテゴリー<span class="required">必須</span></dt> 48<select name="cate" id ="pref"> 49//ここに各カテゴリーを書いています 50 51</select> 52<dt>カラー<span class="required">必須</span></dt> 53<dd><input type="text" name="color" size="10" maxlength="20" value=""> 54</dd> 55<dt>特徴<span class="required">必須</span></dt> 56<dd><input type="text" name="comm" size="10" maxlength="20" value=""> 57</dd> 58<dt>プロフィール画像など(GIF, JPEG, PNGのみ対応)</dt> 59<dd><input type="file" name="upfile" /></dd> 60<p><input type="submit" value="submit" name="submit"/></p> 61</dl> 62 </form> 63 64<?php else: ?> 65<form action="" method="post" enctype="multipart/form-data"> 66<dl> 67<dt>ブランド<span class="required">必須</span></dt> 68<dd><?php if(isset($brand)){ echo $brand; } ?></dd> 69<dt>カテゴリー<span class="required">必須</span></dt> 70<dd><?php if(isset($cate)){ echo $cate; } ?></dd> 71<dt>カラー<span class="required">必須</span></dt> 72<dd><?php if(isset($color)){ echo $color; } ?></dd> 73<dt>ポイント<span class="required">必須</span></dt> 74<dd><?php if(isset($comm)){ echo $comm; } ?></dd> 75<dt>プロフィール画像など</dt> 76<dd> 77<?php if (isset($info)): ?> 78<img src="data:<?php echo$info[mime] ?>;base64,<?php echo $content;?>" alt="sample" /><br> 79<?php endif; ?> 80<?php if (isset($msg)): ?> 81 <span style="color:<?=$msg[0]?>;"><?=$msg[1]?></span> 82<?php endif; ?> 83</dd></dl> 84<div><a href="?action=edit">« 書き直す</a>|<input type="submit" name="register" value="登録する" /></div> 85</form> 86<?php endif; ?> 87 88</center> 89</body> 90</html> 91
長いのでhtmlは省略しました。
PHP初心者なのでわからないことが多いですが、よろしくお願いいたします。