kohanaのテスト2の続き・・・PHPで直接データベースを操作してみる
PHPで直接データベースを操作するコードを書いても kohana は動くんだろうか?・・・と思って書いてみたら、ちゃんと動きました。当たり前か?・・・(^^;;;
<手順>
・application/classes/model/test2 にメソッド getData2() を追加した。
<?php defined('SYSPATH') or die('No direct script access.'); class Model_Test2 extends Model_Database { public function __construct() { parent::__construct(); } public function getData() { $sql = "select id,name,address,tel from test2 order by id ASC"; $result = $this->_db->query(Database::SELECT, $sql, true); return $result; } public function getData2() { define('DBTYPE', 'mysql'); define('DBNAME', 'kohana'); define('DBHOST', 'localhost'); define('DBUSER', 'root'); define('DBPASS', '********'); // パスワード define('DSN', DBTYPE . ":dbname=" . DBNAME . ";host=" . DBHOST . ";charset=utf8"); try { $pdo = new PDO(DSN, DBUSER, DBPASS, array(PDO::ATTR_EMULATE_PREPARES => false)); $pdo->query("SET NAMES utf8"); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $rows = $pdo->query("SELECT id,name,address,tel FROM test2"); while ($row = $rows->fetch(PDO::FETCH_OBJ)) { $rowarray[] = $row; } return $rowarray; } catch (PDOException $e) { exit("データベース処理エラー" . $e); } } } ?>
・パスワードとかちゃんと書かないと動きません。
・application/classes/controller/test2 の9行目を変更する。
$result = $dat->Getdata2();
これで localhost/test2 にアクセスすると同じ結果が表示されます。getData() と getData2() を比較すると、コーディングの手間がえらく違います。なるほどね~・・・。