如何使用PDO确定列类型?

sel*_*oup 4 php database pdo types

当从具有PDO的DB读取时,我需要一种方法来确定数据库列的类型(varchar/numeric/date/...).

从DB中获取值时,无论表列的实际类型如何,PDO都只生成字符串值.

是否有任何非驱动程序的特定方式来获取此信息?我知道有SQL语句可以检索任何给定表的类型,但我更喜欢更通用的解决方案.

编辑: PDOStatement :: getColumnMeta()对我没用,因为我目前使用的PDO驱动程序(Oracle)不支持它.

Vil*_*ili 5

这就是我在 WraPDO 课程中的做法:

$tomet = $sth->getColumnMeta($column_index);
$tomet['type'] = $this->_translateNativeType($tomet['native_type']);

private function _translateNativeType($orig) {
    $trans = array(
        'VAR_STRING' => 'string',
        'STRING' => 'string',
        'BLOB' => 'blob',
        'LONGLONG' => 'int',
        'LONG' => 'int',
        'SHORT' => 'int',
        'DATETIME' => 'datetime',
        'DATE' => 'date',
        'DOUBLE' => 'real',
        'TIMESTAMP' => 'timestamp'
    );
    return $trans[$orig];
}
Run Code Online (Sandbox Code Playgroud)

$sth: PDOStatement->getColumnMeta