我希望从数据库中将表列表转换为数组,并将特定表的列名称转换为Drupal中的数组。请在Drupal中提及查询。感谢
答案 0 :(得分:3)
如果要生成不是数据库中实际结构的结构,而是激活已激活模块的结构,则可以为激活的模块调用hook_schema
。实际上有一个API调用,所以你要做的就是调用drupal_get_schema
这是获取信息的简单方式,但它不会触及数据库,因此任何使用SQL手动创建的表,或者不是来自Drupal的表,或者更改已经用原始SQL做了将找不到。但是,在99.9%的情况下,这将是准确的。
SQL:
SHOW TABLES;
SHOW COLUMNS FROM table_name;
答案 1 :(得分:3)
试试这个
global $db_url;
$db_name = explode("/",$db_url);
$dbname = $db_name[count($db_name)-1];
$tables_list = db_query("SHOW tables FROM ".$dbname." WHERE Tables_in_".$dbname." LIKE 'acc%'");
$list_of_tables = array();
while ($result = db_fetch_array($tables_list)) {
drupal_set_message(t('Table name : @db',array('@db'=>$result['Tables_in_'.$dbname.''])));
$list_of_tables[] = $result['Tables_in_'.$dbname.''];
}
//$list_of_tables array contains tables in database.
$columns = db_query("SHOW FIELDS FROM node");
$list_of_columns = array();
while ($res = db_fetch_array($columns)) {
drupal_set_message(t('Column name : @c',array('@c'=>$res['Field'])));
$list_of_columns[] = $res['Field'];
}
//$list_of_columns contains columns in the node table.
答案 2 :(得分:2)
试试这个
$schema = drupal_get_schema(NULL,TRUE);// Get List Of all tables.
ksort($schema);// Sort Ascending
foreach($schema as $table => $value){
print_r($table."\r\n");
}
答案 3 :(得分:0)
$result = db_query("SHOW TABLES");
while($row = db_fetch_array($result)) {
// Each table should be in $row
// Same here for "SHOW COLUMNS FROM table_name;" from googletorp answer
}
答案 4 :(得分:0)
试试这段代码
<?php
$result = db_query("SHOW TABLES");
foreach($result as $row){
print_r($row);
}
?>
$row
是一个对象。