intro
Zend_DBによるデータベース接続とSQLの実行を行います。ソースコードはこちらからダウンロードできます。
1.config.iniの作成
以下のように
環境に合わせて
この記事では以下のSQLを使用しました(MySQL)。
application/config.ini
ファイルを作成します。環境に合わせて
database.params
以下を変更してください。
1 2 3 4 5 6 |
[staging] database.adapter = pdo_mysql database.params.host = localhost database.params.username = db_user database.params.password = db_password database.params.dbname = db_name |
この記事では以下のSQLを使用しました(MySQL)。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
CREATE TABLE profiles ( id integer auto_increment NOT NULL PRIMARY KEY, user_id integer NOT NULL, first_name varchar(100) NOT NULL, last_name varchar(100) NOT NULL, email varchar(200) NOT NULL, url varchar(200) NOT NULL ); INSERT INTO profiles (user_id, first_name, last_name, email, url) values (1, 'Myfirstname', 'Mylastname', 'my@emailaddress', 'http://myurl/my/page'); |
2.コントローラの作成
以下のように
application/constorllers/IndexController.php
ファイルを作成します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
<?php require_once 'Zend/Controller/Action.php'; require_once 'Zend/Db.php'; require_once 'Zend/Config/Ini.php'; class IndexController extends Zend_Controller_Action { protected function getDbAdapter() { $config = new Zend_Config_Ini(CONFIG_PATH, 'staging'); $dbAdapter = Zend_Db::factory($config->database); return $dbAdapter; } public function indexAction() { $db = $this->getDbAdapter(); $sql =<<<EOSQL SELECT id ,user_id ,first_name ,last_name ,email ,url FROM profiles WHERE user_id = :user_id EOSQL; $params = array('user_id' => 1); $db->setFetchMode(Zend_Db::FETCH_ASSOC); $row = $db->fetchRow($sql, $params); if ($row) { $this->view->profile = $row; } } } |
3.ビューの作成
以下のように
application/views/scripts/index/index.phtml
ファイルを作成します。
1 2 3 4 5 6 7 8 9 10 11 |
<h1><?= $this->translate('Your Profile') ?></h1> <?php if (!$this->profile) : ?> <span><?= $this->translate('No Profile Found') ?></span> <?php else : ?> <dl> <?php foreach($this->profile as $key => $value) : ?> <dt><?= $this->translate($key) ?></dt> <dd><?= $this->escape($value) ?></dd> <?php endforeach; ?> </dl> <?php endif; ?> |
4.確認
Webサーバにアクセスしてデータベースのデータが表示されることを確認してみてください。