作成日:2006/06/15
3B.2 SQLフォームの仕様
環境設定
以下の環境設定が可能です。設定は sql.ini.php の中に記述します。
sql.ini.php
| 項目 | 設定例 |
|---|---|
| 環境定数 | #----------------------------------------------------------- # 環境定数 #----------------------------------------------------------- define( C_UNTITLED_FILE, "untitled.sql"); # 無名のSQLファイル名 define( C_CHARSET, "EUC-JP"); # 使用文字セット define( C_PAGE_TITLE, "SQL フォーム"); # ページのタイトル define( C_MYSQL41, 1 ); # MySQL4.1以上を使用する/しない |
| SQLファイルの保存先 | #----------------------------------------------------------- # SQLファイルの保存先 #----------------------------------------------------------- $sql_path = "./sql"; |
| SQL実行プログラム リスト |
#----------------------------------------------------------- # SQL実行プログラムリスト #----------------------------------------------------------- # $exec_list[IF名]['exec'] = スクリプトファイル名 # $exec_list[IF名]['dbms'][DBMS名] = array(p1=>v1,p2=>v2,・・・) # # [IF名 ]: PEAR/PDO/DBI # [DBMS名]: mysql/sqlite/jet # # [IF名]と[DBMS名]が与えられた場合、以下のスクリプトを実行します # スクリプトファイル名?n1=v1&n2=v2&・・・ # PEAR::DB $exec_list['PEAR']['exec'] = 'sqlexec_pdb.php'; $exec_list['PEAR']['dbms']['mysql' ] = array( 'dsn'=>'mysql://sunlight:password@localhost:3306/test'); $exec_list['PEAR']['dbms']['sqlite'] = array( 'dsn'=>'sqlite:///d:/WWWRoot/samples/sqlfile.php/db/sample.db'); $exec_list['PEAR']['dbms']['jet' ] = array( 'dsn'=>'odbc(access):///jet'); |
SQLスクリプト
本プログラムでは使用できるSQLスクリプトの例を以下に示します。
sample.sql
# テーブル作成 @DROP TABLE syain; CREATE TABLE syain ( syain_no int NOT NULL, syain_name varchar(50), bumon_no int, 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); EVAL sleep(1); # テーブルの検索 SELECT * FROM syain;
SQLスクリプトは文の列として表現できます。以下に文の規則を示します。
- 文はセミコロン( ; )で終わります。
- 1行に複数の文は記述できません。(1文を複数の行に記述することはできます)
- コメントは # で始まります。
- 空文(;だけの文)も有効です。(これは実行結果を改行する為に使います)
SQLフォームでは基本的に以下の2種類の文をサポートしています。
| 文の種類 | 説明 |
|---|---|
| SQL文 |
SQL文にはSELECT文 と 非SELECT文があります。 SELECT 及び SHOW で始まる文が SELECT文 として処理されます。 SQLフォームは SELECT文 の処理結果はテーブルで表示し、 非SELECT文 の場合は、実行結果がエラーの場合のみ結果を表示します。 例:
SELECT * FROM syain; INSERT INTO syain VALUES(1,'Suzuki',3); @DROP TABLE syain; 通常、実行結果にエラーがあった場合、SQLスクリプトの実行は中止されますが、 SQL文の前に @ を付けるとスクリプトを継続します。 |
| EVAL文 |
EVAL で始まる文を EVAL文 と呼びます。EVAL文 の全ての引数はPHPのパーサで処理されます。 例:
EVAL print 'Hello<br />'; EVAL sleep(1); EVAL $db->autoCommit(false); 最後の例で分かるように、EVAL文ではデータベースオブジェクトを操作する事ができます。 詳しくは実際のソースコード( sqlexec_pdb.php の DoSqlScript()の中 )を参照して下さい。 |
