FuelPHP+MySQLでSHOWコマンドの結果を取得
※2013/06/05追記
クエリタイプにDB::SELECTと指定するだけで大丈夫なようです。
参考) http://d.hatena.ne.jp/Kenji_s/20130605/fuel_db_query
id:Kenji_s さん情報ありがとうございます。
- 想定バージョン : FuelPHP 1.6
FuelPHPで『SHOW PROCESSLIST』や『SHOW WARNINGS』等のSHOWコマンドの結果を取りたかったんだけど、下のやり方だと対象の件数しか取れない。。。
<?php $result = \DB::query('SHOW PROCESSLIST');
pdoを使ってたので、コアの『database/pdo/connection.php』を確認したところ、以下の記述。
<?php ... if ($type === \DB::SELECT) { // Convert the result into an array, as PDOStatement::rowCount is not reliable if ($as_object === false) { $result = $result->fetchAll(\PDO::FETCH_ASSOC); } elseif (is_string($as_object)) { $result = $result->fetchAll(\PDO::FETCH_CLASS, $as_object); } else { $result = $result->fetchAll(\PDO::FETCH_CLASS, 'stdClass'); } // Return an iterator of results return new \Database_Result_Cached($result, $sql, $as_object); } elseif ($type === \DB::INSERT) { // Return a list of insert id and rows created return array( $this->_connection->lastInsertId(), $result->rowCount(), ); } else { // Return the number of rows affected return $result->errorCode() === '00000' ? $result->rowCount() : -1; }
SHOW使った時点で件数しか取れないのね。
しょうがないので、以下のようにして取得。
<?php $db = \Database_Connection::instance(); $result = $db->connection()->query('SHOW WARNINGS'); foreach ($result as $val) { echo $val['Message']; }