このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン 次のリビジョン 両方とも次のリビジョン | ||
mariadb:10.4:mysqli [2019/10/30 12:05] y2sunlight [サンプルプログラム] |
mariadb:10.4:mysqli [2020/11/20 08:05] y2sunlight [サンプルプログラムについて] |
||
---|---|---|---|
行 1: | 行 1: | ||
- | ====== MariaDB10.4 PHPサンプルプログラム ====== | + | ====== MariaDB10.4 PHPサンプルプログラム ====== |
- | --- // | + | phpMyAdmin 4.9.0.1 (MariaDB |
+ | --- // | ||
[[mariadb: | [[mariadb: | ||
関連記事 | 関連記事 | ||
- | * [[xampp: | ||
* [[mariadb: | * [[mariadb: | ||
* MariaDB10.4 PHPサンプルプログラム | * MariaDB10.4 PHPサンプルプログラム | ||
行 13: | 行 13: | ||
* [[mariadb: | * [[mariadb: | ||
- | 以下「MySQL」は「MariaDB」に読み替えて下さい | + | 以下「MySQL」は「MariaDB」に読み替えて下さい。 |
- | ---- | + | ----- |
- | ここでは、MySQLの動作を理解するために、サンプルプログラム [[# | + | ===== サンプルプログラムについて ===== |
+ | |||
+ | 本章では、MySQLの動作を理解するために、サンプルプログラム [[# | ||
サンプルプログラムでは MySQLi を使用します。MySQLiは、MySQL(またはMariaDB)データベースとの接続を行うPHP拡張モジュールで、前章で説明した phpMyAdmin でも使用されています。 | サンプルプログラムでは MySQLi を使用します。MySQLiは、MySQL(またはMariaDB)データベースとの接続を行うPHP拡張モジュールで、前章で説明した phpMyAdmin でも使用されています。 | ||
+ | |||
+ | サンプルプログラムでは以下のデータベースを使用します。作り方は、本編の「[[mariadb: | ||
+ | |||
+ | ^ ホスト名 | localhost | | ||
+ | ^ データベース名 | sunlight_db | | ||
+ | ^ 照合順序 | utf8_bin | | ||
+ | ^ ユーザ名 | sunlight | | ||
+ | ^ パスワード | sunlight | | ||
参考リンク | 参考リンク | ||
* https:// | * https:// | ||
+ | |||
+ | 本章のサンプルプログラムの最新版はGitHubで公開しています | ||
+ | * https:// | ||
+ | \\ | ||
===== mysqli クラスの使い方 ===== | ===== mysqli クラスの使い方 ===== | ||
行 73: | 行 87: | ||
</ | </ | ||
- | ===== データベースとの接続 | + | \\ |
+ | |||
+ | ===== mysqli クラスの使用例 ===== | ||
+ | |||
+ | ==== データベースとの接続 ==== | ||
- | 例 | ||
<file php sample1.php> | <file php sample1.php> | ||
<?php | <?php | ||
行 99: | 行 116: | ||
</ | </ | ||
- | ===== テーブルの作成 | + | ==== テーブルの作成 ==== |
- | 例 | ||
<file php sample2.php> | <file php sample2.php> | ||
<?php | <?php | ||
行 141: | 行 157: | ||
</ | </ | ||
- | ===== データの更新 | + | ==== データの更新 ==== |
- | 例 | ||
<file php sample3.php> | <file php sample3.php> | ||
<?php | <?php | ||
行 198: | 行 213: | ||
</ | </ | ||
- | ===== データの検索 | + | ==== データの検索 ==== |
- | 例 | ||
<file php sample4.php> | <file php sample4.php> | ||
<?php | <?php | ||
行 252: | 行 266: | ||
</ | </ | ||
+ | \\ | ||
===== サンプルプログラム ===== | ===== サンプルプログラム ===== | ||
行 258: | 行 273: | ||
* プログラムはSQLスクリプトファイル(テキストファイル)を読み込みます。 | * プログラムはSQLスクリプトファイル(テキストファイル)を読み込みます。 | ||
- | * SQLスクリプトファイルにはSQL文、EVAL文、コメントを含みます。\\ | + | * ファイルにはSQL文、EVAL文、コメントを含み、文はセミコロン('' |
+ | * 行コメント( '' | ||
+ | * 改行を出力したい場合は ''#;'' | ||
* SQL文がSELECT文( またはSHOW文 )の場合は検索結果を表示し、非SELECT文の場合はSQLの実行のみ行います。 | * SQL文がSELECT文( またはSHOW文 )の場合は検索結果を表示し、非SELECT文の場合はSQLの実行のみ行います。 | ||
- | * EVAL文はPHPのeval関数で実行します。但し複文の実行はできません。またクォート処理をしていないので、EVAL echo ' | + | * EVAL文はPHPのeval関数で実行します。但し複文の実行はできません。例えば:'' |
+ | * EVAL文はクォート処理をしていないので、'' | ||
* 検索結果及び実行結果はHTMLで出力します。 | * 検索結果及び実行結果はHTMLで出力します。 | ||
- | * SQLスクリプトファイルはURLのクエリ文字列で指定します。\\ 例えば:< | + | * SQLスクリプトファイルはURLのクエリ文字列で指定します。\\ 例えば:'' |
* クライアント文字セットをUTF8に設定することができます(sオプション)。 | * クライアント文字セットをUTF8に設定することができます(sオプション)。 | ||
行 273: | 行 291: | ||
<file sql sample.sql> | <file sql sample.sql> | ||
- | # テーブル作成 | + | -- テーブル作成 |
DROP TABLE IF EXISTS syain; | DROP TABLE IF EXISTS syain; | ||
CREATE TABLE syain ( | CREATE TABLE syain ( | ||
行 282: | 行 300: | ||
); | ); | ||
- | # テーブルにデータを挿入 | + | -- テーブルにデータを挿入 |
INSERT INTO syain VALUES(1,' | INSERT INTO syain VALUES(1,' | ||
INSERT INTO syain VALUES(2,' | INSERT INTO syain VALUES(2,' | ||
INSERT INTO syain VALUES(3,' | INSERT INTO syain VALUES(3,' | ||
- | # テーブルの検索 | + | -- テーブルの検索 |
SELECT * FROM syain; | SELECT * FROM syain; | ||
</ | </ | ||
行 360: | 行 378: | ||
foreach( $sql_text as $sql ) | foreach( $sql_text as $sql ) | ||
{ | { | ||
+ | if ( !$sql || $sql[0]=='#' | ||
+ | |||
// SQL文表示 | // SQL文表示 | ||
print HTML_Escape(strlen($sql)< | print HTML_Escape(strlen($sql)< | ||
行 453: | 行 473: | ||
function GetSqlText( string $text ) | function GetSqlText( string $text ) | ||
{ | { | ||
- | $sql_text | + | $text = str_replace([" |
- | $delimiters = " | + | |
- | | + | |
- | | + | $text = preg_replace("/ |
- | while ($line !== false) | + | $text = preg_replace("/--.*?$/m", '' |
- | { | + | |
- | // コメントと前後の空白を除去 | + | |
- | $line = preg_replace( array( "/^#.*/", "/^\s*/", "/\s*$/" | + | |
- | if ($sql && strlen($line)> | + | |
- | $sql .= $line; | + | |
- | + | ||
- | // SQL文は ; で区切られる | + | |
- | if ( preg_match("/;$/", | + | |
- | { | + | |
- | $sql_text[] = substr($sql, | + | |
- | $sql = '' | + | |
- | } | + | |
- | | + | |
- | } | + | |
- | return $sql_text; | + | |
+ | $sql = preg_split("/ | ||
+ | array_walk($sql, | ||
+ | $item = trim($item); | ||
+ | }); | ||
+ | $sql = array_filter($sql, | ||
+ | return !empty(trim($val)); | ||
+ | }); | ||
+ | | ||
} | } | ||
行 563: | 行 576: | ||
} | } | ||
</ | </ | ||
+ | |||
+ | \\ | ||