====== Sqlform ドキュメント ======
Version 1.0 ([[https://github.com/y2sunlight/sqlform/blob/main/LICENSE|MIT License]])
--- //[[http://www.y2sunlight.com|y2sunlight]] 2020-10-20//
Sqlform はブラウザ上のフォームからSQLスクリプトを実行できるツールで、スクリプトの編集、保存、呼び出し、削除ができます。テスト時、保守などで利用可能です。ログイン機能を実装していないので、運用時はhttpsにてWebサーバの認証機能を利用するか、認証機能付きのアプリケーションに組み込んでご利用下さい。
Sqlform は [[https://github.com/y2sunlight/sqlform|GitHub]] で公開しています。
\\
===== クイックスタート =====
[[https://github.com/y2sunlight/sqlform/releases|リリース版]]をダウンロードし、適当な場所に解凍して下さい。
ダウンロードした ''sqlform.php''ファイルの存在するディレクトリでPHPのビルトインサーバーを実行します。
php -S localhost:8888
そして、以下のURLにアクセスしてください。
* http://localhost:8888/sqlform.php
[{{:sqlform:usage:ja:sample01.png?nolink}}]
起動後には、以下のsqlスクリプトが表示されています。
SELECT 'Hello, World!' as phrase;
画面右上のプレイボタン(3つ並んだ三番目のボタン)を押すと、実行結果が表示されます。
[{{:sqlform:usage:ja:sample02.png?nolink}}]
\\
> 解凍直後は、データーベースとして **SQLite** が選択されています。SQLiteが使用できない環境、または他のデータベースを構成したい場合は、以下の「[[#構成]]」を参照して下さい。
\\
===== 使い方 =====
=== SQLファイルの読み込みと編集 ===
画面左上のセレクトボックスで保存済みのSQLファイルを選択しSQLを読み込むことができます。例えば、同封されている ''sample.sql'' を選択して下さい。
[{{:sqlform:usage:ja:sample03.png?nolink}}]
ここで呼び出したファイルは編集することもできます。
>SQLスクリプトの仕様については、構成されているデータベースに依存しますが、コメントと拡張機能については以下の「[[#SQLファイルの仕様]]」を参照して下さい。
\\
=== SQLスクリプトの実行 ===
画面右上のプレイボタン(3つ並んだ三番目のボタン)を押すと、編集済のSQLスクリプトを実行し、その結果を表示します。
[{{:sqlform:usage:ja:sample05.png?nolink}}]
\\
=== SQLスクリプトの保存/削除 ===
SQLスクリプトの保存と削除は画面右上のファイル名ボックス、保存ボタン、削除ボタンで行います。
[{{:sqlform:usage:ja:sample04.png?nolink}}]
* ファイル名ボックス --- SQLファイル名を指定します。
* 保存ボタン --- 指定されているファイル名でSQLを保存します。
* 削除ボタン --- 指定されているSQLファイルを削除します。
\\
===== 構成 =====
データベースの構成は、同封の ''config.php'' で行います。
...
/*
* 環境設定を返す
*/
return
[
// データベース接続先設定
'database'=>'sqlite',
'connections' =>
[
'mysql' => [
'dsn' => 'mysql:host=localhost;port=3306;dbname=sunlight_db',
'username' => 'sunlight',
'password' => 'sunlight',
'driver_options' => [PDO::MYSQL_ATTR_INIT_COMMAND => 'set names utf8'],
// 'initial_statements'=> ['set names utf8'],
],
'sqlite' => [
'dsn' => 'sqlite:'.dirname(__FILE__) . '/db/sqlform.sqlite',
'db_file' => dirname(__FILE__) . '/db/sqlform.sqlite',
],
],
// SQLファイル設定
'sql_file' =>[
'path' => dirname(__FILE__) . "/sql/{database}",
],
];
* database--- データベース名 (初期設定値は ''sqlite'')
* connections --- データベース毎の接続を設定します
* sql_file --- SQLファイルに関する設定を行います
''database'' は任意の名前が指定できますが、''connections'' の中で使用する名前と一致している必要があります。''connections''には、複数のデータベースの接続を含める事ができますが、実際に使用されるのは ''database'' で指定されたものだけです。
=== connections ===
各データベースの設定値には以下の項目が含まれます。
* connection_string --- 接続文字列
* db_file --- データベースファイルのパス (初期設定値は db/sqlform.sqlite)
* username --- データベースのユーザ名
* password --- ユーザのパスワード
* driver_options --- データベースドライバー毎のオプション
* initial_statements --- 接続直後に実行する初期化SQL文
''connection_string'' は必須です。''db_file'' は SQLite のようなファイル共有型のデータベースの場合に必要で、''username'' と ''password'' は MySQL のようなクライアント-サーバ型のデータベースの場合に必要になります。尚、ファイル共有型のデータベースのパスはアクセス権のある任意の場所に設定できます。
''connection_string'' と ''driver_options'' についてはを PHPの[[https://www.php.net/manual/en/pdo.drivers.php|PDO driver-specific documentation]] 参照して下さい。
> 接続設定及び接続文字列の詳細は以下を参照して下さい:\\ https://idiorm.readthedocs.io/en/latest/configuration.html#id1
''initial_statements'' はオプションで、データベースとの接続直後に実行するSQL文を設定します。このSQL文は複数指定することができます。
=== sql_file ===
SQLファイルに関する設定です。
* path --- SQLファイルを保存するパス
''path'' はアクセス権のある任意の場所に設定できます。
\\
===== SQLファイルの仕様 =====
SQLファイルにはSQL文、EVAL文、プリント文 及びコメントを含むことができます。
* 文はセミコロン( '';'' )で区切って複数入力できます。
* 連続する空白( TAB, Space, 改行文字 )は1つの空白と同じにみなされます。
* 行コメント( ''-- Comment'' )とブロックコメント( ''/* Comment */'' )の両方が使用できます。
=== SQL文 ===
-- テーブル作成
DROP TABLE IF EXISTS syain;
CREATE TABLE syain (
syain_no int(10) NOT NULL,
syain_name varchar(50),
bumon_no int(10),
PRIMARY KEY (syain_no)
);
-- テーブルにデータを挿入
INSERT INTO syain VALUES(1,'Suzuki',3);
INSERT INTO syain VALUES(2,'Yamamoto',1);
INSERT INTO syain VALUES(3,'Tanaka',2);
-- テーブルの検索
SELECT * FROM syain;
* SQL文は構成されているデータベースに依存します。各データベースのマニュアルを参照して下さい。
* [[https://www.sqlite.org/lang.html|SQLite]] --- SQLite SQL言語マニュアル(本家)
* [[https://mariadb.com/kb/en/sql-statements/|MariaDB]] --- MariaDB マニュアル言語(本家)
* [[https://dev.mysql.com/doc/refman/5.7/en/sql-statements.html|MySQL5.7]] --- MySQL5.7 マニュアル言語(本家)
\\
=== EVAL文 ===
EVAL sleep(1);
SELECT 'Hello, World!' as phrase;
* EVAL文はPHPのeval関数で実行します。上例では: ''eval('sleep(1)');''
* 複文の実行はできません。
実行結果
[{{:sqlform:usage:ja:sample06.png?nolink}}]
\\
=== プリント文 ===
#1秒待って検索する;
EVAL sleep(1);
SELECT 'Hello, World!' as phrase;
* プリント文は文頭が ''#'' で始まる文で、2文字目以降がプリントされます。
* 改行だけを出力したい場合は ''#;'' を入力します。
実行結果
[{{:sqlform:usage:ja:sample07.png?nolink}}]
\\
===== ライセンス =====
Sqlformは [[https://ja.wikipedia.org/wiki/MIT_License|MITライセンス]]の下でライセンスされています。詳細については、[[https://github.com/y2sunlight/sqlform/blob/main/LICENSE|ライセンスファイル]]を参照してください。
\\