php MySQLに接続する

php MySQLに接続する

データベース接続について

用語の説明
Attribute
一言で言えば属性をセットしていると言うこと
PDOにはデフォルトで、エラー文を出さないので、属性をセットしてエラーを出させるようにさせます。
PDOとは
PDOは「PHP Data Objects」の頭文字をとった名称
データアクセス抽象化レイヤみたいです
プリペアドステートメントで結構動作が早いらしい。
データアクセス抽象化レイヤとは?
様々なデータベースがあるが、同じ様に書いても全部のデータベースに対応可能なもの
prepare
値部分にパラメータをつけて実行待ち
execute()
準備したprepareに入っているSQL文を実行

 

それでは説明に入りたいと思います。
下記が全体のコードになります。
今回はデータベースの接続の説明なので
$dbh=new PDO(‘mysql:host=127.0.0.1;dbname=hoge;charset=utf8’, ‘root’, DB_PASSWORD);
から下を説明していきたいと思います。
<?php
require_once(‘../config.php’);
session_start();
try {
    $mypage_name=$_POST[‘name’];
    $mypage_email=$_POST[’email’];
    $mypage_pass=$_POST[‘pass’];
    $mypage_name=htmlspecialchars($mypage_name,ENT_QUOTES,’UTF-8′);
    $mypage_email=htmlspecialchars($mypage_email,ENT_QUOTES,’UTF-8′);
    $mypage_pass=htmlspecialchars($mypage_pass,ENT_QUOTES,’UTF-8′);
    require_once(‘config.php’);
    $dbh=new PDO(‘mysql:host=127.0.0.1;dbname=hoge;charset=utf8’, ‘root’, DB_PASSWORD);
    $dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
    $sql=’SELECT * FROM mypage WHERE email=? AND password=?’;
    $stmt=$dbh->prepare($sql);
    $data[]=$mypage_email;
    $data[]=$mypage_pass;
    $stmt->execute($data);
 
$dbh=new PDO(‘mysql:host=127.0.0.1;dbname=hoge;charset=utf8’, ‘root’, DB_PASSWORD);
$dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
$sql=’SELECT * FROM mypage WHERE email=? AND password=?’;

 

new演算子を使用してPDOクラスのインスタンスを作成しています。
作成したインスタンスを$dbhという変数に代入しています。
$stmt=$dbh->prepare($sql);
$data[]=$mypage_email;
$data[]=$mypage_pass;
$stmt->execute($data);

 

prepareとは
準備するということです
このprepareを使用しないと同じ内容のsql文を使用する度に記述しなくてはなりません。
sql文を使い回しにするためにあると考えていいと思います。
SQL文に?と書いてありますが、この?に値を入れるだけで設定できて、使い回しができます。
この事をプレースホルダーと言います
そのプレースホルダーに値に割り当てる事をバインドと言います。

ステートメントとは

statementは「陳述」とか「声明」って意味です。
プリペアドで用意したものを実行します。って意味
SQLを実行する前に、色々用意して、実行するって事。
そのSQLの条件とか値が異なる時は、そこだけ入れ替えて使えるもの。
そして(execute)でプリペアドステートメントを実行します!!
以上です。