前提
画像投稿掲示板を PHP, MySQL で作っています。
posting.php
が投稿ページで、そのデータを thanks.php
で受け取り、画像等一覧を
index.php
として表示したいです。
※ 今は仮として thanks.php
に一覧を表示できるようしてます。
発生している問題・エラーメッセージ
Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in /var/www/html/php_kadai/php_kadai09/thanks.php on line 16
データベースを見てもデータがinsertされていません・・・
<?php
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>画像投稿掲示板</title>
<link rel="stylesheet" href="reset.css">
<link rel="stylesheet" href="style.css">
</head>
<body>
<h1>画像投稿掲示板</h1>
<hr>
<p class="posting"><a href="posting.php">画像を投稿する</a></p>
<h2>投稿内容一覧</h2>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>画像投稿ページ</title>
<link rel="stylesheet" href="reset.css">
<link rel="stylesheet" href="style.css">
</head>
<body>
<h1>画像投稿掲示板</h1>
<hr>
<form class="contents" action="thanks.php" method="post" enctype="multipart/form-data">
<table border="0" cellspacing="0" cellpadding="0" class="table_basic">
<colgroup>
<col width="33%" />
<col width="67%" />
</colgroup>
<tr>
<th><span>投稿者</span><span class="must">必須</span></th>
<td ><input type="text" name="name" value="" class="box">
</td>
</tr>
<tr>
<th><span>画像タイトル</span><span class="must">必須</span></th>
<td><input type="text" name="title" value="" class="box"></td>
</tr>
<tr>
<th><span>画像ファイル</span><span class="must">必須</span></th>
<td><input type="file" name="uploadfile" value="選択してください"><br><span class="attension">(※png, jpgのみ対応)</span></td>
</tr>
</table>
<p class="button"><input type="submit" name="submit" value="投稿する" width="50px"></p>
</form>
<p class="link"><a href="index.php">画像一覧ヘージはこちら>></a></p>
</body>
</html>
<?php
require_once('functions.php');
$name = $_POST['name'];
$title = $_POST['title'];
$dbh = connectDb();
$sql = "insert into posts (create_at datetime, name, image_name, img_data) values
(now(), :name, :title, :movetofile)";
$stmt = $dbh->prepare($sql);
$stmt->bindParam(":name", $name);
$stmt->bindParam(":title", $title);
$stmt->bindParam(":movetofile", $movetofile);
$stmt->execute();
//echo '成功しました';
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>投稿完了ページ</title>
<link rel="stylesheet" href="reset.css">
<link rel="stylesheet" href="style.css">
</head>
<body>
<h1>画像投稿掲示板</h1>
<hr>
<div id="wrapper">
<p class="title">下記の内容で投稿致します</p>
<p>投稿者:
<?php if(empty($name)) :?>
<?php echo "<p style='color:red;'>投稿者が入力されておりません。</p>"; ?>
<?php else: ?>
<?php echo h($name); ?>
<?php endif; ?>
</p>
<p class="imagestitle">画像タイトル:
<?php if(empty($title)) :?>
<?php echo "<p style='color:red;'>画像タイトルが入力されておりません。</p>"; ?>
<?php else: ?>
<?php echo h($title); ?>
<?php endif; ?>
</p>
<p>画像ファイル:
<?php if(strlen($_FILES["uploadfile"]["name"]) > 0 ) :?>
<?php $fileinfo = pathinfo($_FILES["uploadfile"]["name"]); ?>
<?php $fileext = strtoupper($fileinfo["extension"]); ?>
<?php $errmsg = ""; ?>
<?php if ($fileext != "PNG" and $fileext != "JPG") :?>
<?php $errmsg .= "<p style='color:red;'>対象ファイルはPNGまたはJPGのみです!</p><br>"; ?>
<?php else: ?>
<?php $movetofile = "images/upf_" . $_FILES["uploadfile"]["name"]; ?>
<?php if (! move_uploaded_file($_FILES["uploadfile"]["tmp_name"], $movetofile)) :?>
<?php $errmsg .= "<p style='color:red;'>ファイルのアップロードに失敗しました。</p><br>"; ?>
<?php endif; ?>
<?php endif; ?>
<?php if ($errmsg == "") :?>
<?php echo $_FILES["uploadfile"]["name"] . "<br>"; ?>
<?php echo "<img src='$movetofile'><br><br><br>"; ?>
<?php else: ?>
<?php echo $errmsg . "<br><br><br>"; ?>
<?php @unlink($_FILES["uploadfile"]["tmp_name"]); ?>
<?php endif; ?>
<?php else: ?>
<?php echo "<p style='color:red;'>アップロードするファイルが指定されていません!</p><br>"; ?>
<?php endif; ?>
</p>
<p class="return"><a href="posting.php">画像投稿ページへ戻る>></a></p>
<p class="link"><a href="index.php">画像一覧ヘージはこちら>></a></p>
</div>
</body>
</html>