ザコンのないアキバそうか、20日閉館だったのか。目立つランドマークのひとつだったんだけど、ここまでなくなっちゃうんだもんなぁ。値段が安いわけではないし、あまりここで買い物をした記憶はないんだけども、書籍コーナーが充実しているのでそこだけはよく利用させてもらってた(特に、書泉ブックタワーができる前は)。あー、あと1階のエスカレータ脇にあったソフトベンダーTAKERUが妙に印象に残ってる。別に利用したことないけど(こればっか)。実はザ・コン館よりも、すぐ裏手のアソビットキャラシティのほうが思い入れが深く、楽器館だったころはよくシークホー(中古市)に出かけたりしてたな。8をここで深夜販売で買った気がする。オノデン坊やもそういえば、オノデンライフストアのオノデン坊やも先週あたりから解体工事で見えなくなって、これまた寂しい。再開発が進むにつれて、どんどん知らないアキバになってゆくなぁ。8を買った、ってくだりでよいリンク先がないか探したら、こんなところが見つかった。残念ながら、手持ちのブラウザのうちちゃんと閲覧できたのはIE6とOpera9だけ(Safariすらはじかれた)なのだが、わりと良くできてて、すこし懐かしい気持ちになった。打ち消し線はつらいなぁ。15時09分51秒はじめにまたも1週間のご無沙汰になりましたが、前回の予告どおり、データベース機能の説明に入ります。DBMSに関しては、前回に予告したとおりSQLiteを対象としますので、先にこちらの番外編を参考にして、コンソールアプリケーションを導入しておくとよいでしょう。Framework入門ですので、SQLに関する細かい説明などはあまりしない予定です(まぁ、シンプルな使い方しかしない予定ですが)。データベースになれていない方は、他のSQL入門記事なども参考にされるとよいと思います。それでは本文へまいりましょう。Frameworkのデータベース機能はZend_Db名前空間に集約されていて、以下のようなクラス群で構成されています。データベースへの接続やZend_Db_Statement・Zend_Db_Selectのファクトリとして機能する、Zend_Dbの主要クラス。DBMSへの問い合わせを行うステートメントオブジェクト。Zend_Db_Adapterと同様に、基本の抽象クラスから派生した固有のクラスがDBMS間の違いを吸収する。データベースの表(Table)を表現する抽象クラスで、Zend_DbにおけるO/Rマッピングを実現する。基本的にはDBMS上のテーブルと対になるクラスをZend_Db_Tableから派生させる。データベースの行(Row)を表現する抽象クラス。Zend_Db_Tableの操作により生成される。行を更新することができる。複数のZend_Db_Rowを扱うためのIteratorクラスで、Zend_Db_Tableによる問い合わせの結果として取得する。これらのクラスを使い分けてデータベース操作を行っていきますが、今回はまずZend_Db_Adapterによる接続と問い合わせのサンプルを作成します。今回は「zdb1」という名前のアプリケーションを作成しましょう。構成はシンプルに、以下のようにします。htdocs/zdb1/application/controllers/IndexController.phpviews/index/index.phtmlindex.php.htaccesszdb1.dbcreate_table.sqlzdb1直下にある「zdb1.db」は、SQLiteのデータベースファイルで、「create_table.sql」はこのアプリケーションで扱うテーブルを作成するためのSQLファイルです。これらについては次の項で説明します。その他のファイル構成は特に説明の必要はないかと思います。肝心のアプリケーションですが、ものすごくシンプルなブックマークにしてみます。以下の情報を扱うことにします。タイトルURL登録日時コメントテーブルは1テーブルで、以下の構成にします。テーブル名は「bookmarks」とします。valueにしてもいいのですが、挿入される日付にロケールが考慮されないようなので、コードで挿入することにします。データベースを作成するまずはテーブルを作成する「create_table.sql」です。テーブル作成とインデックスの作成、初期データの挿入をしています。),'dara-jのtumblr。');create_table.sqlこのファイルを、今回のアプリケーションディレクトリに「create_table.sql」という名前で保存してください。作成したcreate_table.sqlをsqlite3で以下の要領で実行する手順です。今回のアプリケーションディレクトリからコマンドプロンプトを起動します。そこからsqlite3を実行します。次に、「.read」コマンドで、先ほど作成したcreate_table.sqlを実行します。.readコマンドはエラーがなければなにも表示しないので、sqlite_master(メタデータテーブル)を確認してみます。テーブル・2つのインデックスとも定義されていればOKです。ついでに同時に実行したinsertが正常にできているかを、以下のように確認します。05:01:25|dara-jのtumblr。確認できたらsqlite3を終了しましょう。.quitデータベースへ接続の接続と基本的な問い合わせ今度はPHP側のコードを作成していきましょう。アクションメソッドの追加とリンクの扱い方」で決定したものをそのまま流用できます(つまり、zf2のもの)。IndexControllerは次のようになります。