非エンジニアのエンジニア道

非エンジニアからエンジニアに転向!その勉強の軌跡を載せていきます。

Zend Framerorkを使う その3

データベースを使う

mysqlを組み込む。mysql自体はインストール済。

Zend_Db_Table_Abstract

これを使うために、index.phpに追記

<?php
require_once 'Zend/Db.php';
$params = array(
        'host'     => '127.0.0.1',
        'username' => 'fuga',
        'password' => 'hoge',
        'dbname'   => 'dbname',
        'charset'  => 'UTF8'
);
$db = Zend_Db::factory('PDO_MYSQL', $params);
Zend_Db_Table_Abstract::setDefaultAdapter($db);

modelで実際に使う

insertを取り急ぎ作る

<?php

class ShioriMain extends Zend_Db_Table_Abstract
{
    protected $_name = 'shiori_main';
}

class MainEdit
{
    public function addData($title, $thema, $startDate, $endDate, $member)
    {
        $shiori = new ShioriMain();
        $data = array(
            self::COLUMN_TITLE => $title,
            self::COLUMN_THEMA => $thema,
            self::COLUMN_START_DATE => $startDate,
            self::COLUMN_END_DATE => $endDate,
            self::COLUMN_MEMBER => $member,
            self::COLUMN_CREATE_AT => new Zend_Db_Expr('NOW()'),
            self::COLUMN_UPDATE_AT => new Zend_Db_Expr('NOW()')
        );
        $shiori->insert($data);
    }
}

エラー

The mysql driver is not currently installed

実際に動かそうとしたら、エラー
あらま!というわけでなおす

拡張モジュールのインストール

# pecl install pdo_mysql

phpize: コマンドが見つかりません

動きません。

ビルドツールインストール

phpizeは、phpの拡張モジュールのためのビルドツール
それがないので、インストール

# yum -y install php-devel

# pecl install pdo_mysql
configure: error: mysql_query missing!?

再度、peclを実行したが、エラー・・・


開発用モジュールインストール

mysql開発用モジュールがインストールされていないので、インストール

# yum -y install php-mysql-devel
# yum -y install mysql-devel

# pecl install pdo_mysql

今度は成功!

php.iniに追記

extension=pdo.so
extension=pdo_mysql.so

apache再起動で、上記insertが動きました!

modelでselectもついでに試す

<?php
    public function getShioriData($id)
    {
        $shiori = new ShioriMain();
        $select = $shiori->select()
                ->where('`' . self::COLUMN_ID . '` = ?', $id);
        $result = $shiori->fetchRow($select);

        if(empty($result) === false) {
            $result = $result->toArray();
        }

        return $result;
    }

動いた動いた。おめでたい。