LoginSignup
1
0

More than 3 years have passed since last update.

PHP For Beginnersチュートリアル その4 PDOとデータベースの基本

Last updated at Posted at 2019-07-22

このシリーズの目的

体系的なwebコーディングの訓練ができるようになるために、PHPの初学のきっかけかつ、PHPでログインフォームやフォームを実装することができるようになるために

PHP For Beginners

上記のチュートリアルを進めているのでその備忘録。

前回

内容

今回のチュートリアル

PHP Tutorial For Beginners: Use PDO To Connect To MySQL Database

やったこと

・PDOを使い、MySQLに接続する。
・MySQLでテーブルを作り、そこにデータを登録する。
・登録したデータを変更したり、削除したりする。

成果物

pdo.php
<?php

    try {

        $PDO = new PDO("mysql:host=localhost;dbname=pdotutorial", "root", "");  //サーバーのIPアドレスやURL、ユーザー名、パスワード

        // 登録するデータを宣言する

        $name = "test1";
        $email = "test@example.com";

        // how to insert data using PDO ?
        // $stmt = $PDO->prepare("INSERT INTO test(name,email) VALUES(?,?)");
        // $stmt->execute([$name,$email]);
        // ここまでデータをデータベースに登録する基本的な書き方。

        // 登録したデータの内容を変更する。下記はデータのname部分を任意に置き換える例
        // $stmt = $PDO->prepare("UPDATE test SET name=? WHERE id=1");
        // $stmt->execute(["test1 5"]);

        // 登録したデータを削除する
        // $stmt = $PDO->prepare("DELETE FROM test WHERE id=1");
        // $stmt -> execute();

        // データベースに登録さているデータを羅列して表示させる
        $stmt = $PDO->prepare("SELECT name,email FROM test");
        $stmt->execute();
        while($data = $stmt->fetch())
            echo $data["name"] . "->" . $data["email"] . "<br>";

    } catch(PDOException $e) {

        echo $e->getMessage();

    }


?>

MySQLでのテーブルの作り方

1.Newをクリックする
2019-07-23_01h35_30.png

2.作成するデータベースの名前と文字コードを決める
→今回はutf-8 Unicode
2019-07-23_01h37_23.png

3.テーブルの名前とカラム数を決める
→カラム数はデータの中身によって決める。
例えば中身がid=1,名前,メールアドレスといったデータの場合、カラム数は3となる。
2019-07-23_01h38_16.png

4.カラム別に設定を行う
名前の部分はPHPでも使用するので、それに適したものを。
nameとemailはVARCHARという可変長形式の文字列を指定し、任意の限界文字列を決める。
idはAuto Incrementにチェックを入れ、インデックスはPRIMARYにする。
今回はこのような設定だが、この部分は今後実際に扱っていく上でデータによって細かく設定を行うことになるので、その都度しっかり覚えていくことが大切である。
2019-07-23_01h43_56.png

今回のコードの注釈

アロー演算子、prepare、execute
<?php

 $stmt = $PDO->prepare("INSERT INTO test(name,email) VALUES(?,?)");
 $stmt->execute([$name,$email]);

アロー演算子はクラスのメソッドやプロパティにアクセスするための演算子である
prepareはexecuteメソッドを実行するために必要なSQL文のことであり書くまでもないがexecuteメソッドはそれを実行するためのものである
つまりこの場合1行目はpdo.phpの冒頭で作成したインスタンスである$PDOにアクセスしその後testという名前のテーブルにあるnameとemailというデータに値を設定する準備が行われており2行目で同じくアロー演算子を使いexecuteメソッドの引数に任意の変数を指定するとその変数に代入された値がそれぞれ設定されそれが一行目の変数$stmtに代入されるのでそれがtestテーブルに記録されるということになる

?>
while文と$stml->fetch();

while($data = $stmt->fetch())
            echo $data["name"] . "->" . $data["email"] . "<br>";

while文はphpにおける繰り返し処理の一つである
while();で引数に設定した値がTRUEである限りendowhile;が書かれるまで繰り返し処理が行われる
$data = $stmt->fetch();はデータベースからデータを取得するための処理
つまりこの一連の処理はまずデータベースに登録されているデータを総て取得しそれをnameの値ーemailの値といった形式で改行しながら書き出すということになる
endwhileが無くても処理が止まるのはデータベースに登録されているデータの数が例えば5つだった場合6つ目は存在しないので$data = $stmt->fetch();はfalseになるので繰り返しは5回で止まるから

参考

PHPのアロー演算子(->)をできるだけ分かりやすく
【PHP】queryとprepareの違い

1
0
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
0