こんにちは。明月です。
ウェブサービスを開発すると思ったら当たり前にデータベースも使います。もちろん、データを必ずデータベースを使うことではなく、バイナリやエクセルなどでもデータを管理してウェブサービスを立ち上げられます。
でも、データベースよりデータ管理しやすいものでは無いので、データベースをほとんど使うと思います。
データベースの種類としては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
- [PHP] 匿名関数(ラムダ式)とクロージャ(closure)2020/02/04 03:00:00
- [PHP] PHPのコーディング領域とデザイン領域を分離するテンプレートライブラリ Smarty2020/02/02 03:00:00
- [PHP] Reflection - Variable編2020/02/01 03:00:00
- [PHP] Reflection - Method編2020/01/31 03:00:00
- [PHP] Reflection - Class編2020/01/30 03:00:00
- [PHP] エラーページ処理方法(追加: ob_cleanとdie関数使用方法)2020/01/29 03:00:00
- [PHP] 分散設定ファイル(.htaccess) 使用方法2020/01/28 03:00:00
- [PHP] データベース(mariaDB)を連結して使う方法2020/01/24 03:00:00
- [PHP] IOに関して2020/01/23 03:00:00
- [PHP] requireとinclude、そして「@」の使用方法2020/01/22 03:00:00
- [PHP] Fatal及びNotice,、Warningメッセージ処理する方法2020/01/19 03:00:00
- [PHP] xDebug設定する方法2020/01/18 03:00:00
- [PHP] $_SERVER, $GLOBALS, $_GET, $_POST, $_REQUEST, $_COOKIE, $_SESSION, $_FILES, $_ENV(getenv())2020/01/17 03:00:00
- [PHP] データ確認関数(var_dump, debug_zval_dump, print_r)2020/01/16 03:00:00
- [PHP] 例外処理(try ~ catch ~ finally)2020/01/15 03:00:00
- check2024/04/10 19:03:53
- [Java] 64.Spring bootとReactを連結する方法(Buildする方法)2022/03/25 21:02:18
- [Javascript] Node.jsをインストールしてReactを使う方法2022/03/23 18:01:34
- [Java] 63. Spring bootでcronスケジューラとComponentアノテーション2022/03/16 18:57:30
- [Java] 62. Spring bootでWeb-Filterを設定する方法(Spring Security)2022/03/15 22:16:37
- [Java] JWT(Json Web Token)を発行、確認する方法2022/03/14 19:12:58
- [Java] 61. Spring bootでRedisデータベースを利用してセッションクラスタリング設定する方法2022/03/01 18:20:52
- [Java] 60. Spring bootでApacheの連結とロードバランシングを設定する方法2022/02/28 18:45:48
- [Java] 59. Spring bootのJPAでEntityManagerを使い方2022/02/25 18:27:48
- [Java] 58. EclipseでSpring bootのJPAを設定する方法2022/02/23 18:11:10
- [Java] 57. EclipseでSpring bootを設定する方法2022/02/22 19:04:49
- [Python] Redisデータベースに接続して使い方2022/02/21 18:23:49
- [Java] Redisデータベースを接続して使い方(Jedisライブラリ)2022/02/16 18:13:17
- [C#] Redisのデータベースを接続して使い方2022/02/15 18:46:09
- [CentOS] Redisデータベースをインストールする方法とコマンドを使い方2022/02/14 18:33:07