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()の引数として渡します。