webかたつむり ウェブデザインを勉強中 ウェブ初心者のおぼえがき

webかたつむり

ウェブデザインを勉強中

PDO / form に入力された値をデータベースに格納する

<?php
session_start();

if (empty($_SESSION)) {exit;}

  • セッションに値がないときは処理をやめさせる。トリプルチェック。


$user = 'root';
$pass = '';
$dsn = 'mysql:host=localhost;dbname=guestbook;charset=utf8';

  • dsn=data source name
  • mysql:→データベース管理システム=データベース

f:id:ohta-felica:20160802232655p:plain

  • host=localhost;→データベースのサーバー名
  • dbname=guestbook;→データベース名
  • charset=utf8';→データベースの文字エンコード
  • PDOclassのインスタンス化に必要な引数をすべて変数化。

$conn = new PDO($dsn, $user, $pass);

f:id:ohta-felica:20160802225727p:plain

f:id:ohta-felica:20160802230225p:plain

f:id:ohta-felica:20160802230343p:plain

f:id:ohta-felica:20160802225856p:plain

f:id:ohta-felica:20160802230542p:plain

$m_name = $_SESSION['your_name']
$m_mail = $_SESSION['email']
$m_message =$_SESSION['comment']

  •  入力内容の取得($_SESSIONから)

 

$sql = 'INSERT INTO message(m_name, m_mail, m_message, m_dt)
VALUES(:m_name, :m_mail, :m_message, NOW())';

 

  • 「message」 テーブルにある、(これらのカラム)にVALUE以下の値を挿入しなさい。
  •  データの追加 
  • 「:」テンプレートパラメーター。仮パラメーターの接頭辞。PHPでは仮参照。とりあえず名前にしている。

 

 

 


$stmt = $conn->prepare($sql);
$stmt->bindParam(':m_name', $m_name);
$stmt->bindParam(':m_mail', $m_mail);
$stmt->bindParam(':m_message', $m_message);
$stmt->execute();

  • $stmt stands for "statement"
  • インスタンス化されたPDOclassのprepare methodを代入する
  • prepare methodの中にあるbindParamメソッドを呼び出す


$error = $stmt->errorInfo();
if ($error[0] != '00000') {
$message = 'データの追加に失敗しました。' . $error[2];
} else {
$message = 'データを追加しました。データ番号:' . $conn->lastInsertId();
}
?>