2016-12-13 4 views
1

dataType、nameおよびtableName、length isNullまたはその主キーのようなクエリから列の情報を取得しようとしています。たとえば についてはpdo phpを使用してクエリの列とそのデータ型情報を取得する方法

クエリが、それは列が名前の収益のcolorTypeとそれらのdataTypeのような名前を返す必要があり

select Name, price*version as revenue , color as colorType from carsRev 

ある場合。

私はgetColumnMeta

$stmt = $this->_connection->prepare($query); 
      $stmt->execute(); 
      foreach (range (0, $stmt->columnCount() - 1) as $column_index)  { $meta [] = $stmt->getColumnMeta ($column_index); 
      } 
      print_r($meta); 

を使用していますが、その収益のような派生列を与えていません。

答えて

1

PDO->getColumnMetaについて学ぶことに興味があるので、私は以下の要素でテストを再現しました。

私の設定では、PHPは5.3.10、MySQLは5.5.21です。

CREATE TABLE `carsrev` (
    `name` varchar(11) NOT NULL, 
    `color` varchar(10) NOT NULL, 
    `version` int(11) NOT NULL, 
    `price` decimal(10,2) NOT NULL, 
    PRIMARY KEY (`name`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8; 


INSERT INTO `carsrev` (`name`, `color`, `version`, `price`) VALUES 
    ('Cevalo', 'Blue', 1, '10.00'), 
    ('Catz', 'Red', 2, '201.50'); 

PHPコード:私は次のような結果を得る

ini_set('display_errors', 'On'); 
error_reporting(E_ALL); 

$connect = new PDO('mysql:host=localhost;dbname=database', 'login', 'password'); 

$query = "select name, price*version as revenue , color as colorType from carsrev"; 

$stmt = $connect->prepare($query); 

$stmt->execute(); 

foreach (range(0, $stmt->columnCount() - 1) as $column_index) { 
    $meta [] = $stmt->getColumnMeta ($column_index); 
} 

print_r($meta); 

(読みやすくするために再フォーマット):

Array ([0] => Array ([native_type] => VAR_STRING [pdo_type] => 2 [flags] => 
    Array ([0] => not_null [1] => primary_key) [table] => carsrev [name] => name [len] => 33 [precision] => 0) 

    [1] => Array ([native_type] => NEWDECIMAL [pdo_type] => 2 [flags] => 
    Array ([0] => not_null) [table] => [name] => revenue [len] => 22 [precision] => 2) 

    [2] => Array ([native_type] => VAR_STRING [pdo_type] => 2 [flags] => 
    Array ([0] => not_null) [table] => carsrev [name] => colorType [len] => 30 [precision] => 0)) 

として

SQLは、テーブルを作成し、養うためにあなたは、私は派生列の名前と形式(NEWDECIMAL)を得ることができます参照してください。

+0

これは機能していました。私はコードでいくつかの間違いをしていました。 –

関連する問題