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)
を得ることができます参照してください。
これは機能していました。私はコードでいくつかの間違いをしていました。 –