PHPとMySQLの接続

PHPとMySQLの接続についてメモ( ..)φ

インストール環境はWindows10

☆使うもの

・XAMPP(PHPとMySQLとapache)
 https://www.apachefriends.org/jp/index.html

1.XAMPPのインストール

セットアップ超簡単。すごい
PHPとMySQLとapacheはチェック入れてOK押してればインストール完了。
Cドライブ直下にxamppってフォルダできて、そこの中のファイル操作します。操作するディレクトリ

■MySQLとapacheの起動停止
 C:\xampp\xampp-control.exe
■作成するファイルの保存場所
 C:\xampp\htdocs


2. MySQLにデータを入れる

とりあえず例で「sakila」ってデータを入れる。なんでもいいけどね
インストール方法は公式に載ってるので英語がんばって読む!
コマンド3つくらい打てば入るから簡単
👇公式ドキュメント
https://dev.mysql.com/doc/sakila/en/sakila-installation.html


3. とりあえず簡単に操作

DBにアクセスして簡単に入れたデータ操作してみる。
PHPからMySQL操作する時も、実際にはSQL発行することになるから何となく操作方法は理解しといたほうがヨシ。
以下のコマンドはコマンドプロンプトで操作してるよ

#passとか設定してなければこれでMySQLにログイン
cd C:\xampp\mysql\bin
mysql -u root -p 
 #sakila databaseを使う
use sakila
 #データベースに格納されているテーブルの確認
show tables from sakila;
 #actor テーブルの中身を確認
show columns from actor;
describe actor;

中身なに入ってるのかわかったら、あとは「select」やら「update」やらで何するか決めて、ごにょごにょする。
SQL文は(自分のやりたいことが明確に決まれば)調べればやり方はネットにいっぱい出てます ^^) 


4. PHPファイルの作成

最初に書いたディレクトリにファイル作成するよ
ココ ⇒ C:\xampp\htdocs
直下にお試しで「index.php」ってファイルを作成するよ
こんな感じ ⇒ C:\xampp\htdocs\index.php

この「index.php」に具体的に処理書いていきます。
ってゆーても簡単にまとめたら、
①MySQLに渡すpasswordとか操作するDBを指定してあげる
②SQL文発行する
③フェッチしてデータ受け取る
④(大事やけど必須ではない)例外処理書く
の、4つくらいしか処理はない。

ちなみにPHPとMySQLの接続方法は以下の2パターン
・mysqli_connect()
・PDO()
どっちでもいいと思うけど、いくつか参考書やら見てたら最近はPDO使ってるほうが多いイメージ?PDOやとMySQL以外にも接続できるから嬉しいみたい。なので、ここではPDOで接続したときの処理書きます

index.php(画面まっしろ)

<!DOCTYPE html>
<html lang="en">

<head>

 <meta charset="utf-8">

 <title>sample</title>

</head>

<body>

 <?php

   //オプションの指定(PDOの中に直接書き込んでもOK)
   $dns = 'mysql:host=localhost;dbname=sakila';
   $user = 'root';
   $pass = '';
   
   //try~で接続処理。catchで例外処理。
   try{
   $db = new PDO($dns, $user, $pass);   
   } catch (PDOException $e) {
     print 'false to connect' .$e->getMessage();
   }
   
 ?>

</body>

</html>

上記のファイル作成して、ブラウザのアドレスバーに
「localhost/index.php」
と打ち込めば、画面が見れる!まだ接続しただけで処理ないから真っ白

ここに、たとえば「sakila」データベースの「actor」テーブルの「actor_id」を見たいとしたら、そのSQL文を発行&結果を取得する処理を書けばよし。

index.php(ちょっと画面に文字出る)

<!DOCTYPE html>
<html lang="en">

<head>

 <meta charset="utf-8">

 <title>sample</title>

</head>

<body>

 <?php

   //オプションの指定(PDOの中に直接書き込んでもOK)
   $dns = 'mysql:host=localhost;dbname=sakila';
   $user = 'root';
   $pass = '';
   
   //接続したときの処理
   try{
   //PDOで接続
   $db = new PDO($dns, $user, $pass);

   //接続だけでなくクエリに問題あったときにPDOが例外を発行
   $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

   //actor_idを上から10個取得するSQL文
   $sql = 'select actor_id from actor limit 10';

   //DBに対してクエリを発行
   $result = $db->query($sql);

   //発行した結果をFETCHする(これしないと結果受け取れない)
   while ($row = $result->fetch()) { 
   print($row['actor_id'] . ' ');
   };

   //例外処理
   } catch (PDOException $e) {
     print 'false to connect' .$e->getMessage();
   }
   
 ?>

</body>

</html>

これで、ブラウザのアドレスバーに「localhost/index.php」と打てば、
「58 92 182 118 145 194 76 112 67 190」が結果として出るハズ。

※クエリの発行に関して
prepareとexecuteでやってたりもします。
※FETCHに関して
色々オプションがあるので、オプション付けると返ってくる形式変えれます。欲しいデータの形にするためには試行錯誤が必要なり
☟FETCHのオプションについて
https://www.php.net/manual/ja/pdostatement.fetch.php

5. さいごに

取得したデータをきれいにテーブルで表示させたり、
取得したデータをJavascriptに渡して描画させたりも簡単にできるので、
次回はその辺書けたらいいかな~~




この記事が気に入ったら、サポートをしてみませんか?
気軽にクリエイターの支援と、記事のオススメができます!
1
まだまだ平社員
コメントを投稿するには、 ログイン または 会員登録 をする必要があります。