1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

PHPでフォームに入れたデータを、MySQLのデータベースに追加したい

Last updated at Posted at 2021-11-10

前提条件

MySQLのデータベースが用意できていること

入力フォームをHTMLで書く

.phpファイルを作成していかを書き込む。

<form action="送るphpファイルの名前。一旦、今書いてるファイル名" metod="post">
  <label>投稿内容</label>
  <input type="text" name="content">
  <button type="submit">送信<button>
</form>

投稿内容をサーバに送って表示できるようにする

とりあえず、データベースに送る前に、送信ボタンを押したら、上にその内容が表示される仕組みを作ってみる。
(送信ボタンを押したら、サーバに送って、サーバ上でPHPが処理した内容を表示させるだけでデータベースにつながっていないので、リロードするとすぐ消えちゃう。)

さっき書いていた.phpファイルのフォームの上あたりに以下を追加

<?php
  print_r($_POST);
?>

phpにはPOSTメソッドを受ける$_POSTというのが用意されてるので、これをprint_rで出力するだけ。

PHP組み込みのisset関数を使って、中身に応じて出し分けてみる。

基本の書き方はこんな感じ。

if ( isset ( 変数名 )) {
  変数の中身がある時の処理
}else{
  変数の中身が空の時の処理
}

今回はこんな感じに書き換えてみる

<?php
  print_r($_POST);

if ( isset ( $_POST["キー名"] )) {
  $content = $_POST["キー名"];
}else{
  $content = "なし";
}
echo "投稿内容:" . $content;

?>

データベースと繋ぐ

さっきのisset関数の部分を以下の通りに書き換える。

<?php
 // 接続
 $pdo = new PDO("mysql:host=ホスト名;dbname=データベース名;charaset=utf8", "ユーザ名", "パスワード" );

 print_r($_POST);

 if ( isset ( $_POST["キー名"] )) {
  // 投稿内容を変数contentへ入れる
   $content = $_POST["キー名"];
  // SQL文を入れる
   $sql = "INSERT INTO bbs (content, update_at) VALUES(:content, NOW());";
  // さっきのSQL文をセットする
  $stmt = $pdo->prepare($sql);
 // SQL文の中に、投稿内容を入れた変数を直接SQL文にセットはできない。
 //ここでbindValueを使って、変数contentを:contentに入れる
  $stmt -> bindValue(":content", $content, PDO::PAEAM_STR);
 // SQL文を実行
  $stmt -> ececute();
 }else{
  $content = "なし";
 }
echo "投稿内容:" . $content;

?>
1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?