2012-03-23 105 views
1

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

谢谢。

$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

http://php.net/manual/en/pdostatement.getcolumnmeta.php像文档说 - 这是实验性的,并非所有的PDO的驱动程序支持。所以...'也许'。 – 2012-03-23 03:09:59

+0

如何检查个人col数据类型?谢谢你。 SELECT COUNT(LastName)FROM subscriber WHERE DATA_TYPE ='varchar' – 2012-03-23 03:21:22

+0

好吧,我明白了 – 2012-03-23 03:25:35

回答

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方法应该是不言自明的。

希望这是有益

相关问题