如何在pdo中获取字段数据类型?

时间:2012-03-23 02:22:44

标签: php mysql pdo

下面是我试图做的一些代码,我使用的是mysql 5.0+和innodb引擎。 可以我使用getColumnMeta(实验?)和如何来使用它来获取数据类型元数据?

谢谢。

 $types = array(
    PDO::PARAM_BOOL => 'bool',
    PDO::PARAM_NULL     => 'null',
    PDO::PARAM_INT      => 'int',
    PDO::PARAM_STR      => 'string',
    PDO::PARAM_LOB      => 'blob',
);

try{

$sql = 'SELECT COUNT(*) FROM subscriber,list_sub WHERE list_sub.ListID =? AND list_sub.SubID = subscriber.SubID  ';

$stmt = $conn->prepare($sql);
$stmt->execute(array($list));
$meta = $stmt->getColumnMeta(0);
var_dump($meta);
}
catch(PDOException $e)
    {
    die ($e->getMessage()."<a href='view.php' onClick='window.location.reload()'> Back</a>"); 
    }

1 个答案:

答案 0 :(得分:0)

我知道这个帖子已有1年多了,但是如果其他人偶然发现它,就像我在搜索中一样,它可能会有用。

我有一个我构建的PDO数据库包装器类,这是我的类中的方法。我不知道它是多么便携,因为我从未使用过oracle,但它适用于我使用MySql的情况。这要求DBMS支持“SHOW COLUMNS FROM”,因此它应该与任何支持它的DBMS一起使用。

可以看出,我使用try / catch块来捕获可能出现的任何PDO异常并记录错误。

    /**
 * @ getFieldType - gets the field data type for a specific field in a table.
 *
 * @ param type: text $table = The name oof a data table.
 * @ param type: text $field = A field in the data table.
 */
public static function getFieldType($table, $field) {
    $ret = false;
    $sql = "SHOW COLUMNS FROM `$table` WHERE Field = '$field'";

    try {
        $result = self::dbQueryRow($sql);
        $ret = $result['Type'];
    } catch (PDOException $e) {
        self::logError($e, "getFieldType", $sql);
    }

    return $ret;
} //End public static function getFieldType

此处使用的dbQueryRow和logError方法应该是自解释的。

希望这是有帮助的