SOY CMS / SOY Shop

ブログトップ

SOY2DAOで外部のデータベースから値を取得する

2014年03月26日

データベースからデータを取得するときにSOY CMSやSOY AppではSOY2DAOを使って、

$users = $userDao->get();

のように取得することは便利だけれども、

SOY App開発の説明 SOY2DAOでデータベースを利用する2


値を表示するだけで編集しないとか、

外部のデータベースを利用するときにSOY2DAOに必要なファイルを用意して実行は面倒なのも確かです。


今回は外部のデータベースから値を取得する方法を説明します。




今回はSQLiteで話を進めますが、MySQLでも同じです。


はじめにDSNの切替を行います。


$db = "sqlite:{データベースのパス}/sqlite.db";
SOY2DAOConfig::dsn($db);
SOY2DAOConfig::user("");
SOY2DAOConfig::pass("");

このような手順でDSNを切り替えます。

SQLiteではデータベースのアカウントがないので、userとpassは空文字を入れておきます。


$dao = new SOY2DAO();

次にSOY2DAOオブジェクトを呼び出します。


$sql = "SELECT * FROM database;";

実行したいSQL構文を作成して、


try{
	$result = $dao->executeQuery($sql);
}catch(Exception $e){
	$result = array();
}

SOY2DAOクラスのexecuteQueryの第一引数にSQLを挿入して実行すると、

$resultの0番目の値にSQLの実行結果が格納されています。


これで外部のデータベースからデータを取り出す方法は終わりです。


実行の際にプレースホルダ-を利用したい場合は、

$sql = "SELECT * FROM database WHERE id = :id;";
$binds = array(":id" => $id);

とバインド変数を用意しておいて、


try{
	$result = $dao->executeQuery($sql, $binds);
}catch(Exception $e){
	$result = array();
}

executeQuery()の引数として渡します。