[PHP] データベース(mariaDB)を連結して使う方法


Study / PHP    作成日付 : 2020/01/24 03:00:00   修正日付 : 2020/01/24 03:00:00

こんにちは。明月です。


ウェブサービスを開発すると思ったら当たり前にデータベースも使います。もちろん、データを必ずデータベースを使うことではなく、バイナリやエクセルなどでもデータを管理してウェブサービスを立ち上げられます。

でも、データベースよりデータ管理しやすいものでは無いので、データベースをほとんど使うと思います。


データベースの種類としてはOracleやSql server(MsSql)、mysql、postgreなど様々な種類がありますが、ここではmariaDB(mysql)を使います。

Mysqlのインストールは省略します。

link - [Ubuntu] MariaDB(Mysql)をインストールする方法

link - [CentOS] MariaDB(Mysql)をインストール

link - Window用ダウンロード


sqlクエリは各キーワードは差がありますが、概念は同じです。

PHPでデータベースを使うようにはphp.iniを修正しなければならないです。


php.iniの中で「extension=mysqli」がありますが、この部分のコメント(;)を除いてapacheを再起動します。

そしてphpinfo()で確認すると「mysqli」がロードされたことを知ることができます。


一応、PHPからデータ取得するソースを実装するため、データベースにデータを挿入しましょう。

create database blogTest;
use blogTest;
create table testTable (
  idx int auto_increment primary key,
  data varchar(255)
)

insert into testTable (data) values ('TEST1');
insert into testTable (data) values ('TEST2');
insert into testTable (data) values ('TEST3');
insert into testTable (data) values ('TEST4');

select * from testTable;


データを作成しました。上のデータをPHPからデータを取得しましょう。

<?php
  // データベースから受取るデータをオブジェクトするクラス
  class Node {
    private $idx;
    private $data;
    // 割当て(new)する時に「idx」と「data」のデータを入れる。
    public function __construct($idx, $data) {
      $this->idx = $idx;
      $this->data = $data;
    }
    // idxを取得するプロパティ
    public function getIdx() {
      return $this->idx;
    }
    // dataを取得するプロパティ
    public function getData() {
      return $this->data;
    }
  }

  // データベース情報
  $hostname = "localhost";
  $username = "root";
  $password = "";
  $dbname = "blogTest";

  $rslt = array();

  // mysqlを接続する。
  $conn = mysqli_connect($hostname, $username, $password, $dbname);
  try {
    // データベースを選択する。
    mysqli_select_db($conn,$dbname);
    // クエリを送って結果を取得する。
    $rs = mysqli_query($conn,"select * from testTable");
    // 結果はiteratorタイプで受け取る。
    while($rst = mysqli_fetch_assoc($rs)){
      // クラスを生成してデータを入れて、リストに入れる。
      array_push($rslt, new Node($rst["idx"], $rst["data"]));
    }
  } catch ( Exception $e ) {
    die ( $e );
  } finally {
    mysqli_close($conn);
  }
?>
<!DOCTYPE html>
<html>
  <head><title>title</title></head>
  <body>
    <?php 
      // リストからデータを出力する。
      foreach($rslt as $value) {
        echo $value;
        echo "<br />";
      }
    ?>
  </body>
</html>


PHPからデータベースを接続するようにはmysqli_connectでコネクションを作ります。データベースコネクションはIOのコネクションみたいにリソースなので最後には必ずリソース返却(close)しなければならないです。

コネクションを作った後、データベースを選択します。クエリでは「use データベース」と同じです。

そして「mysqli_query」関数でクエリを送るし結果を受け取ります。


この例ではmysqli_fetch_assoc関数を使っていますが、mysqli_fetch_rowでも受け取ることが出来ます。

これは一般配列か、連関配列かの差ですが、mysqli_fetch_rowで一般配列(数字で探索)で結果を受け取られるし、mysqli_fetch_assocはカラム名のキーで連関配列で結果を受け取られます。


PHPでは連関配列でも一般配列みたいに数字でデータを取得することができるので、両方使える条件ならmysqli_fetch_rowよりmysqli_fetch_assocがいいじゃないかと思われます。


sqlコネクションはリソースなのでclose関数でリソースしなければならないです。


link - https://www.php.net/manual/en/function.mysqli-connect.php

link - https://www.php.net/manual/en/mysqli.select-db.php

link - https://www.php.net/manual/en/mysqli.query.php

link - https://www.php.net/manual/en/mysqli-result.fetch-assoc.php

link - https://www.php.net/manual/en/mysqli.close.php

最新投稿