PHPのTODOアプリのアウトプット①MySQLに接続

PHPのTODOアプリのアウトプット①MySQLに接続

854 回閲覧されました

みなさんこんにちは、jonioです。

MAMPのMySQLを使ったPHPのTODOアプリの作り方をこの記事で勉強しました。

この記事はPHPをProgateで勉強した後に勉強するのにめちゃくちゃおすすめです。

記事を書いた方ありがとうございます、あなたは神です。

勉強した内容を他の場面でも使いたいので忘れないための自分へのメモとして作り方の解説を書きます。

この記事を書いた方の内容をパクろうとかそんな気持ちはないので自分なりに調べた情報も多少追加して画像で情報を補ったりしています。

自分が後で思い出せるように書くので他の人が見ても理解できると思います。

それではメモの開始です。

 

 

必要なファイル

todoフォルダの中に↓のファイルを作成します。

ログイン画面や編集画面で画像を使うのですが画像に関しては素材サイトで取ってください。

 

 

MAMPのMySQLに接続

MAMPのMySQLにターミナルから接続しますが↓の記事で解説しています。

ターミナルでMySQLに接続したら↓のSQLを入力します。

そしてターミナルで「show databases;」と入力するとデータベースの一覧が表示されて「todo」があるのでそれを使うためにターミナルで「use todo;」と入力するとtodoデータベースを使う状態になります。

そしてpostsテーブルとusersテーブルの中身 を見るために↓のSQLをターミナルで入力します。

そうするとターミナルで↓の表示がされるはずです。

↑の赤枠が表示されれば上手くいってます。

 

 

ファイルからデータベースに接続

データベースに接続してpostsテーブルとusersテーブルのカラムの中に何が入っているかをターミナルで見ましたがファイルからデータベースに接続できるようにします。

大元のphpのファイルをデータベースに接続できるようにして他のphpのファイルは大元のファイルの情報を使うことができるようにします。

大元のファイルはdb_connect.phpです。

 

 

データベースに接続するためのコード

db_connect.phpのコードを↓にします。

このファイルはWEB上のページは必要ないのでHTMLを含んでいません。

データベースにファイルから接続するためのコードは↓です。

これはdb_connect.phpのコードの9行目になります。(「try」や「catch」などありますが後で説明します)

9行目の「new PDO(DSN,DB_USERNAME,DB_PASSWORD);」と3行目〜5行目が対応しているのですが対応は下記となります。

  • 9行目のDB_USERNAME:3行目
  • 9行目のDB_PASSWORD:4行目
  • 9行目のDSN:5行目

3行目〜5行目を9行目のDB_USERNAME・DB_PASSWORD・DSNに代入しているのですが2行目〜5行目の説明をします。

2行目の「todo」はデータベース名です。

ターミナルでデータベースを作成したときに↓のSQL文を入力したはずです。

この時にtodoデータベースを作っています(↑のSQL文の1行目)がそれです。

3行目はユーザー名を「root」にして4行目はパスワードを「root」にしているということですがデフォルトだとrootになっています。

パスワードが分からない場合MAMP上で確認する方法はこうします。(パスワードが分かっている場合はこの部分の説明は見なくていいです)

 

 

MAMP上でのパスワードの調べ方

MAMPを起動した状態で↓の赤枠をクリックします。

すると↓のページになりますがページの下の方にある赤枠をクリックします。

するとユーザー名(赤枠)とパスワード(青枠)が表示されますのでユーザー名とパスワードを確認してください。

コードの2行目・3行目・4行目ですが「todo」・「root」以外の部分はそのまま書いて大丈夫です。

5行目の「mysql:host=localhost;charset=utf8;dbname=’.DB_DATABASE」ですがこういう意味です。

  • mysql:host=localhost:データベースはMySQLでlocalhostを使う
  • charset=utf8:文字コードはutf8を使う、これで日本語の文字化けを防げる
  • dbname=’.DB_DATABASE:コードの2行目にあるtodoデータベースを使う

5行目の「define(‘DSN’,‘mysql:host=localhost;charset=utf8;dbname=’.DB_DATABASE);」は「‘mysql:host=localhost;charset=utf8;dbname=’.DB_DATABASE」の内容をDSNに代入するという意味です。

これでデータベースにファイルから接続できますがプログラムを実行中に何らかの不具合が出た場合はアプリが止まってしまいこれはまずいので不具合が出た時の処理をしてアプリが止まらないようにします。(これを例外処理といいいます)

 

 

例外処理の書き方

例外が起きそうな部分を「try」「catch」で挟み例外が起きた時の処理をcatchの後に書きます。

ざっくりコードにすると↓になります。

db_connect.phpのコードの説明に戻りますが例外処理があります。

8行目〜15行目です。

7行目のdb_connect関数の中に入っていますが他のファイルで使うためです。

9行目はデータベースに接続するための記述です。

10行目はこれがあるとエラーが見やすくなるので書いていてこんなもんと思っていいです。

11行目で「return」を使っていますがこれは他のファイルで使うためです。

12行目の「PDOException $e」は例外処理のオプションでとりあえず書いています。

13行目の「$e -> getMessage()」はエラーの内容を生成するための記述です。

14行目は例外の処理を終了するための記述です。

これでファイルからデータベースに接続するための設定ができたので今回はここまでです。

次はログインページ(login.php)の説明をします。