phpからmysqlにデータ保存(テキストと画像)
登録フォームを作成し、PHPにてMYSQLに情報を保存しようとしています。
テキストデータは問題なく保存できるのですが、画像データが保存できません。
いろいろ調べているのですが、テキストデータと画像データをいっぺんに保存する方法がわかりません。
なんとなくはどこらへんが問題なのかということはわかるのですが、具体的にどうすればいいかがわかりません。
アドバイスをご教示いただけないでしょうか。よろしくお願いします。
【mysqlテーブル】
create table entries (
id int not null auto_increment primary key,
name varchar(255),
address varchar(255),
image1 MEDIUMBLOB NOT NULL,
image1 MEDIUMBLOB NOT NULL,
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
【touroku.php】
<?php
error_reporting(E_ALL & ~E_NOTICE);
if ($_SERVER['REQUEST_METHOD']=="POST") {
$name = $_POST['name'];
$email = $_POST['email'];
$image1 = $_POST['image1'];
$image2 = $_POST['image2'];
$error = array();
// エラー処理
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$error['email'] = 'メールアドレスが正しくありません';
}
if ($email == '') {
$error['email'] = 'メールアドレスが入力されていません';
}
// エラーがなかった場合
if (empty($error)) {
// DBにデータを入れる
mysql_connect("localhost", "ユーザー名", "パスワード") or die("can't connect to DB: ".mysql_error());
mysql_select_db("DB名") or die("can't select to DB: ".mysql_error());
$q = sprintf("insert into entries (name, email, image1, image2) values ('%s', '%s', '%s', '%s')", mysql_real_escape_string($name), mysql_real_escape_string($email), mysql_real_escape_string($image1), mysql_real_escape_string($image2));
mysql_query($q) or die("can't run query: ".mysql_error());
// 登録完了画面に飛ぶ
header("Location: http://localhost/.../thanks.html");
}
}
?>
<!DOCTYPE html>
<html lang="ja">
<meta charset="UTF-8">
<title>登録フォーム</title>
<head>
</head>
<body>
<form method="post" action="">
<p>名前:</p>
<input type="text" name="name" value="<?php echo htmlspecialchars($name); ?>">
<?php if ($error['name']) echo $error['name']; ?>
<p>メールアドレス</p>
<input type="text" name="email" value="<?php echo htmlspecialchars($email); ?>">
<?php if ($error['email']) echo $error['email']; ?>
<br>
<p>画像1:</p>
<input type="file" name="image1">
<p>画像2:</p>
<input type="file" name="image2">
<p><input type="submit" value="登録"></p>
</form>
</body>
</html>
お礼
回答ありがとうございます。そういう方法もあるのですね。