webdata
DX推進をサポートする技術者向け情報提供サイト

初心者向けPHP・データベース入門

TOP >初心者向けPHP・データベース入門 >2.3 PHPからDBを操作

【PHP入門】PHPからDBを操作

 2023-05-02 (更新日:2023-06-11)

<学習する内容>

 PHP文よりデータベースへのアクセスとデータの抽出を行い表示させる動きを理解します。

1)DBへの接続

PHPからDBへの接続を行います。
						<?php
							//DBへの接続
							$conn = mysqli_connect('localhost','root','******','sales') or die("er 接続できません。");
						?>
						
mysqli_connect('localhost','root','******',''sales'); これがPHPからMySQLに接続するコマンドです。
ただし、実際にはこのような書き方はせず下記のように変数を使ってき記述します。
						<?php
							$host = 'localhost';	//サーバ名
							$user = 'root';			//ユーザ名
							$pass = '********';		//DBのパスワード
							$dbnm = 'sales';		//データベース名
							
							//DBへの接続
							$conn = mysqli_connect($host,$user,$pass,$dbnm) or die("er 接続できません。");
						?>
						

<解説>
 このコマンドは、()内に記載されている情報でMySQLに接続しなさいというコマンドです。
dieとは、接続できなったときに()内のメッセージを表示させます。
 PHPの記述は必ず<?php ~ ?>で囲まれてます。よってファイルは<?phpで始まり?>で終わります。
また、HTML文もPHPの中で記述していきます。
 PHPでは変数を多用します。変数は必ず$で始まり次の文字は必ずアルファベットとなります。アルファベットのあとは数字が使えます。 例)$a、$a1、$ABC等々   $1aは使えません。
なぜ変数を使うかは、取り扱うデータが多く便利だからです。学習している間にご理解頂けるかと思います。
$connのコマンドも変数かしてます。都度SQLにコマンドを送る際必ず接続が必要となるのでたった$connで記述が済みます。

<コメントアウトについて>
 あと、プログラム内に // と記述ありますが、これはコメントアウトといい // 以降の行内の文字はプログラムでは無視させる記述となります。 // 以外に # も使えます。複数行にまたがる場合は
/*
.......
.....
......
*/
にように /* ...... */ で囲みます。囲まれている記述はプログラムとして認識しません。

2)DBからデータを取り出し表示させる

 PHPにてDBへの接続を行います。
mysqli_connect('localhost','root','******',''sales'); これがPHPからMySQLに接続するコマンドです。
ただし、実際にはこのような書き方はせず下記のように変数を使ってき記述します。

下記のサンプルプログラムをコピーもしくはダウンロードし指定のフォルダーに配置してください。
必ずDBのパスワードを********から設定したパスワードに変更してください
ファイル名:customerlist2_3.php 拡張子は .php です。
配置先:c:\xampp\htdocs\
配置先URL:http://localhost/customerlist2_3.php

サンプルプログラム名:customerlist2_3.php
						<?php
							$host = 'localhost';	//サーバ名
							$user = 'root';			//ユーザ名
							$pass = '********';		//DBのパスワード
							$dbnm = 'sales';		//データベース名
							
							//DBへの接続
							$conn = mysqli_connect($host,$user,$pass,$dbnm) or die("er 接続できません。");
							//データの抽出
							$sql = "select customerCode,customerName from Mcustomer where customerCode = 10001;";
							$res = mysqli_query($conn,$sql) or die("エラー $sql");
							$row = mysqli_fetch_array($res);
								$customerCode = $row["customerCode"];
								$customerName = $row["customerName"];
								
								echo "得意先情報:".$customerCode."/".$customerName;
						?>
						

<解説>
・select文について
 customerCodeが10001の得意先名がブラウザに表示されます。
 $sql = "select customerCode,customerName from Mcustomer where customerCode = 10001;";
 $sqlに上記SQLのselect文を代入。mysqli_queryにてDBへ接続し$resに代入。  その代入された結果をmysqli_fetch_arrayにて取り出せるよう$rowに代入。
 結果、$rowにの中にある["customerCode"]にカラム名customerCode代入され["customerName"]に
 カラム名customerNameのデータが代入される。
 なにかまわりくどいようですが、
 ・SQL文を記述     
 ・SQL文を実行     mysqli_query
 ・実行結果を取り出す  mysqli_fetch_array
 まずは、この3つをワンセットとして覚えてください。
 変数の$row["*********"]ですが、一つの変数の中に複数のデータを格納できる配列形式で、別途他の章で説明します。

・echo文について
 echo はブラウザに表示させます。
 今回では、得意先情報:得意先コード/得意先名 を表示させています。
 "得意先情報:"は、"から次の"までに囲われている文字を、「 . 」はその後、変数を$customerCode
 をつなげ、「 . 」にて"から"に囲まれいる「 / 」をつなげ、「 . 」にて$customerNameをつなげてます。
 わかりずらいので下記の例を記します。
 例)echo "得意先情報:"; → 得意先情報: を表示
  echo "得意先情報:"."得意先名"; → 得意先情報:得意先名 を表示
  $a = "得意先情報:"."得意先名";
  echo $a;  → 得意先情報:得意先名 を表示
  $customerCode = 10001;   ※数値のみは"から"の囲みは不必要です。
  $custometName = "ABC株式会社"   ;
  $a = $customerCode.$customerName;
  echo $a;  → 得意先情報:10001ABC株式会社 を表示
  $a = $customerCode."&".$customerName;
  echo $a;  → 得意先情報:10001&ABC株式会社 を表示
 ドット「 . 」は文字や変数をつなぎます。

3)失敗で理解する

<うまく表示されなかった方へ>
下記を確認ください。
①エラー:
 Apache、Mysqlが起動してますか?
 右図のように起動してください。

②エラー:
  DBパスワードを記述してますか? 
  $pass = '********'; そのままでは?
  ******に設定したDBのパスワードを記述しください。

  もしくは、Mysqlが起動してますか?
  ①の対処同様Mysqlを起動してください

③エラー:
  ファイル名は間違ってませんか? →customerlist.php
  格納先は間違ってませんか?   → c:\xampp\htdocs\

④エラー:
  データが無いためです。
  4.DBの基本操作の4)の①データ作成してますか?
   MariaDB [sales]> insert into Mcustomer(customerCode,customerName,zipcode,
   address1,address2)values (10001,'ABC株式会社','220-0001','神奈川県横浜市中区〇〇',
   '横浜ビル10階');

次は、得意先一覧として表示させます。