如何使用pdo php获取sql查询中形成的查询列及其数据类型信息
我试图从查询中获取列的信息,如其数据类型、名称和表名、长度为null或主键 比如说 如果查询是如何使用pdo php获取sql查询中形成的查询列及其数据类型信息,php,mysql,sql,pdo,Php,Mysql,Sql,Pdo,我试图从查询中获取列的信息,如其数据类型、名称和表名、长度为null或主键 比如说 如果查询是 select Name, price*version as revenue , color as colorType from carsRev 然后,它应该返回列名称,如名称revenue colorType及其数据类型 我正在使用getColumnMeta $stmt = $this->_connection->prepare($query); $stmt-
select Name, price*version as revenue , color as colorType from carsRev
然后,它应该返回列名称,如名称revenue colorType及其数据类型
我正在使用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);
但它并没有提供类似于衍生列的收入 出于对
PDO->getColumnMeta
的好奇,我使用以下元素复制了您的测试
在我的配置中,PHP是5.3.10,MySQL是5.5.21
用于创建和馈送表的SQL:
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);
我得到以下结果(重新格式化为更可读):
如您所见,我可以获得派生列的名称和格式
(NEWDECIMAL)
。我在代码中犯了一些其他错误。
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 ) )