下面是我试图做的一些代码,我使用的是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>");
}
答案 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方法应该是自解释的。
希望这是有帮助的