====== 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|ライセンスファイル]]を参照してください。 \\