前提・実現したいこと
テキストエリアに入力された内容をデータベースに登録するシステムを作ろうとしたところ以下のようなエラーが出てしまいました。
発生している問題・エラーメッセージ
エラーメッセージを検索してみるとおそらく型が違うものを入れようとしているということだと思うのですがどのように直せばいいかわかりません
該当のソースコード
<html> <head> <meta charset="UTF-8"> <title>メッセージ</title> </head> <body> <h3>メッセージ</h3> <br> <?php session_start(); try { $dsn = 'mysql:dbname=map;host=localhost'; $user = 'root'; $password = ''; $dbh = new PDO ( $dsn, $user, $password ); // データベースに接続 $dbh->query ( 'SET NAMES utf8' ); // 文字コードのための設定 } catch ( Exception $e ) { echo 'サーバが停止しておりますので暫くお待ちください。'; exit (); } if(isset($_POST["send"])){ printf("sender = %s\nsubject = %s\ntext = %s",$_SESSION["name"],$_POST["title"],$_POST["content"]); $sender = htmlspecialchars($_SESSION["name"]); $subject = htmlspecialchars($_POST['title']); $text = htmlspecialchars($_POST['content'], ENT_QUOTES, 'UTF-8'); $data = []; try{ $sql = "INSERT INTO mail(sender,subject,text) VALUES(?,?,?)"; $stmt = $dbh->prepare ( $sql ); $data = $sender; $data = $subject; $data = $text; $stmt->execute($data); }catch(PDOException $e){ die($e->getMessage()); } } $dbh = null; // データベースから切断 ?> <form method="post" action=""> <div style="display:table-cell"> <p>件名</p><input type="text" name="title"> <p>メッセージ</p><textarea name="content" cols="60" rows="10"></textarea> </div> </div> <p><input type="submit" name="send" value="送信"></p> </form> <input type="button" value="戻る" onClick="history.back()"> </body> </html>
試したこと
データベースのtextのタイプをvarcharに変更してみたりしたのですが駄目でした
以下のサイトを参考に
$text = htmlspecialchars($_POST['content'], ENT_QUOTES, 'UTF-8');
としてみたのですが駄目でした
フォームデータをデータベースに登録
補足情報(FW/ツールのバージョンなど)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/12/08 07:20
2021/12/08 07:22
退会済みユーザー
2021/12/09 00:26