このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
|
mariadb:10.4:mysqli [2019/10/17 16:38] y2sunlight [サンプルプログラム] |
mariadb:10.4:mysqli [2020/11/20 08:20] (現在) y2sunlight [サンプルプログラムについて] |
||
|---|---|---|---|
| 行 1: | 行 1: | ||
| - | > **本編は投稿中です。しばらくお待ち下さい。** | + | ====== MariaDB10.4 PHPサンプルプログラム ====== |
| + | phpMyAdmin 4.9.0.1 (MariaDB 10.4.6) | ||
| - | ---- | ||
| - | |||
| - | ====== MariaDB10.4 PHPサンプルプログラム ====== | ||
| --- // | --- // | ||
| - | |||
| [[mariadb: | [[mariadb: | ||
| 関連記事 | 関連記事 | ||
| - | * [[xampp: | ||
| * [[mariadb: | * [[mariadb: | ||
| * MariaDB10.4 PHPサンプルプログラム | * MariaDB10.4 PHPサンプルプログラム | ||
| 行 17: | 行 13: | ||
| * [[mariadb: | * [[mariadb: | ||
| - | ---- | + | 以下「MySQL」は「MariaDB」に読み替えて下さい。 |
| - | ここでは、MySQLの動作を理解するために、サンプルプログラム [[# | + | ----- |
| + | |||
| + | ===== サンプルプログラムについて ===== | ||
| + | |||
| + | 本章では、MySQLの動作を理解するために、サンプルプログラム [[# | ||
| サンプルプログラムでは MySQLi を使用します。MySQLiは、MySQL(またはMariaDB)データベースとの接続を行うPHP拡張モジュールで、前章で説明した phpMyAdmin でも使用されています。 | サンプルプログラムでは MySQLi を使用します。MySQLiは、MySQL(またはMariaDB)データベースとの接続を行うPHP拡張モジュールで、前章で説明した phpMyAdmin でも使用されています。 | ||
| + | |||
| + | サンプルプログラムでは以下のデータベースを使用します。作り方は、本編の「[[mariadb: | ||
| + | |||
| + | ^ ホスト名 | localhost | | ||
| + | ^ ポート番号 | 3366| | ||
| + | ^ データベース名 | sunlight_db | | ||
| + | ^ 照合順序 | utf8_bin | | ||
| + | ^ ユーザ名 | sunlight | | ||
| + | ^ パスワード | sunlight | | ||
| 参考リンク | 参考リンク | ||
| * https:// | * https:// | ||
| + | |||
| + | 本章のサンプルプログラムの最新版はGitHubで公開しています | ||
| + | * https:// | ||
| + | |||
| + | > GitHubでは同等の機能のある最新版を公開しています。 | ||
| + | |||
| + | \\ | ||
| ===== mysqli クラスの使い方 ===== | ===== mysqli クラスの使い方 ===== | ||
| 行 75: | 行 91: | ||
| </ | </ | ||
| - | ===== データベースとの接続 | + | \\ |
| + | |||
| + | ===== mysqli クラスの使用例 ===== | ||
| + | |||
| + | ==== データベースとの接続 ==== | ||
| - | 例 | ||
| <file php sample1.php> | <file php sample1.php> | ||
| <?php | <?php | ||
| 行 101: | 行 120: | ||
| </ | </ | ||
| - | ===== テーブルの作成 | + | ==== テーブルの作成 ==== |
| - | 例 | ||
| <file php sample2.php> | <file php sample2.php> | ||
| <?php | <?php | ||
| 行 143: | 行 161: | ||
| </ | </ | ||
| - | ===== データの更新 | + | ==== データの更新 ==== |
| - | 例 | ||
| <file php sample3.php> | <file php sample3.php> | ||
| <?php | <?php | ||
| 行 200: | 行 217: | ||
| </ | </ | ||
| - | ===== データの検索 | + | ==== データの検索 ==== |
| - | 例 | ||
| <file php sample4.php> | <file php sample4.php> | ||
| <?php | <?php | ||
| 行 254: | 行 270: | ||
| </ | </ | ||
| + | \\ | ||
| ===== サンプルプログラム ===== | ===== サンプルプログラム ===== | ||
| 行 260: | 行 277: | ||
| * プログラムは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オプション)。 | ||
| === サンプルプログラムを使った例 === | === サンプルプログラムを使った例 === | ||
| - | ブラウザからサンプルプログラム(sqlfile.cgi)を実行します。 | + | ブラウザからサンプルプログラム(sqlfile.php)を実行します。 |
| < | < | ||
| - | http:// | + | http:// |
| </ | </ | ||
| <file sql sample.sql> | <file sql sample.sql> | ||
| - | # テーブル作成 | + | -- テーブル作成 |
| DROP TABLE IF EXISTS syain; | DROP TABLE IF EXISTS syain; | ||
| CREATE TABLE syain ( | CREATE TABLE syain ( | ||
| 行 283: | 行 304: | ||
| ); | ); | ||
| - | # テーブルにデータを挿入 | + | -- テーブルにデータを挿入 |
| 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; | ||
| </ | </ | ||
| 実行結果 | 実行結果 | ||
| - | [{{: | + | [{{: |
| - | === サンプルプログラム( sqlfile.cgi )のソース === | + | // |
| + | |||
| + | === サンプルプログラム( sqlfile.php )のソース === | ||
| <file php sqlfile.php> | <file php sqlfile.php> | ||
| 行 331: | 行 354: | ||
| { | { | ||
| die($mysqli-> | die($mysqli-> | ||
| + | } | ||
| + | |||
| + | // 文字セットの指定 | ||
| + | if (isset($_REQUEST[' | ||
| + | { | ||
| + | $mysqli-> | ||
| } | } | ||
| 行 353: | 行 382: | ||
| 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)< |
| print "< | print "< | ||
| ob_flush(); flush(); | ob_flush(); flush(); | ||
| 行 446: | 行 477: | ||
| function GetSqlText( string $text ) | function GetSqlText( string $text ) | ||
| { | { | ||
| - | $sql_text | + | $text = str_replace([" |
| - | $delimiters = " | + | |
| - | | + | |
| - | | + | $text = preg_replace("/ |
| - | while ($line !== false) | + | $text = preg_replace("/ |
| - | { | + | |
| - | // コメントと前後の空白を除去 | + | |
| - | $line = preg_replace( array( "/^#.*/", "/^\s*/", "/\s*$/" | + | |
| - | if ($sql && strlen($line)>0) $sql .= ' '; | + | |
| - | | + | |
| - | | + | |
| - | if ( preg_match("/;$/", $line) ) | + | $sql = preg_split("/\s*;\s*/", $text); |
| - | { | + | |
| - | $sql_text[] = substr($sql,0,-1); | + | $item = trim($item); |
| - | $sql = '' | + | }); |
| - | } | + | $sql = array_filter($sql, function($val){ |
| - | $line = strtok($delimiters); | + | return !empty(trim($val)); |
| - | } | + | }); |
| - | return $sql_text; | + | return $sql; |
| } | } | ||
| 行 505: | 行 530: | ||
| function HTML_Escape( string $str ) | function HTML_Escape( string $str ) | ||
| { | { | ||
| - | // return htmlentities( $str, ENT_QUOTES, C_CHARSET ); | ||
| return htmlentities( $str, ENT_QUOTES, " | return htmlentities( $str, ENT_QUOTES, " | ||
| } | } | ||
| 行 516: | 行 540: | ||
| function FORM_Escape( string $str ) | function FORM_Escape( string $str ) | ||
| { | { | ||
| - | // return htmlspecialchars( $str, ENT_QUOTES, C_CHARSET ); | ||
| return htmlspecialchars( $str, ENT_QUOTES, " | return htmlspecialchars( $str, ENT_QUOTES, " | ||
| } | } | ||
| 行 525: | 行 548: | ||
| function HTML_Begin() | function HTML_Begin() | ||
| { | { | ||
| - | header(' | + | header(' |
| print <<< | print <<< | ||
| < | < | ||
| 行 557: | 行 580: | ||
| } | } | ||
| </ | </ | ||
| + | |||
| + | \\ | ||