如何在 zend 的数据库中获取 table 的列名?
How to get the column names of table in a database in zend?
我正在 zend 中创建一个应用程序,用户将在其中输入主机、数据库名称、用户名和密码以连接数据库,并将能够检索 table 和 [=20= 中的列]也要开始工作了..
我正在使用此代码获取数据库中的 tables:
$ExternalDb = new Zend_Db_Adapter_Pdo_Mysql(array(
'host' => $host,
'username' => $user,
'password' => $pass,
'dbname' => $dbName
));
try{
//Create connection
echo $ExternalDb->getConnection()->getAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY);
foreach($ExternalDb->listTables() as $table){
//$table = new $table(array('db' => $ExternalDb)); it doesn't work
echo "<pre>";
print_r($table);
//$cols = $table->info(Zend_Db_Table_Abstract::COLS); It doesn't work
echo "</pre>";
}
} catch (Exception $ex) {
echo $ex;
}
我能够获取 table 名称,但我也在尝试获取列名称...
提前致谢!
您可以从 Zend_Db_Table_Abstract
检索信息。
像这样创建一个新的 class:
class foo extends Zend_Db_Table_Abstract
{
}
在您的代码中:
foreach($ExternalDb->listTables() as $table){
$dbTable = new foo($ExternalDb);
$dbTable->setOptions(array($dbTable::NAME => $table));
var_dump($dbTable->info($dbTable::COLS));
unset($dbTable);
}
另一种不用Zend_Db_Table_Abstract
的方法,直接用Zend_Db_Adapter
,可以用describeTable()
的方法:
foreach($ExternalDb->listTables() as $table){
$describ = $ExternalDb->describeTable($table);
foreach($describ as $col_name => $col_desc){
var_dump($col_name);
}
}
我正在 zend 中创建一个应用程序,用户将在其中输入主机、数据库名称、用户名和密码以连接数据库,并将能够检索 table 和 [=20= 中的列]也要开始工作了..
我正在使用此代码获取数据库中的 tables:
$ExternalDb = new Zend_Db_Adapter_Pdo_Mysql(array(
'host' => $host,
'username' => $user,
'password' => $pass,
'dbname' => $dbName
));
try{
//Create connection
echo $ExternalDb->getConnection()->getAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY);
foreach($ExternalDb->listTables() as $table){
//$table = new $table(array('db' => $ExternalDb)); it doesn't work
echo "<pre>";
print_r($table);
//$cols = $table->info(Zend_Db_Table_Abstract::COLS); It doesn't work
echo "</pre>";
}
} catch (Exception $ex) {
echo $ex;
}
我能够获取 table 名称,但我也在尝试获取列名称...
提前致谢!
您可以从 Zend_Db_Table_Abstract
检索信息。
像这样创建一个新的 class:
class foo extends Zend_Db_Table_Abstract
{
}
在您的代码中:
foreach($ExternalDb->listTables() as $table){
$dbTable = new foo($ExternalDb);
$dbTable->setOptions(array($dbTable::NAME => $table));
var_dump($dbTable->info($dbTable::COLS));
unset($dbTable);
}
另一种不用Zend_Db_Table_Abstract
的方法,直接用Zend_Db_Adapter
,可以用describeTable()
的方法:
foreach($ExternalDb->listTables() as $table){
$describ = $ExternalDb->describeTable($table);
foreach($describ as $col_name => $col_desc){
var_dump($col_name);
}
}