2016-08-23 293 views
0

我有一個查詢應該循環遍歷數據庫中的所有表。它做得很好,我通過輸出表名來測試它。
但是,我試圖循環訪問數據庫中的每一列,以便我可以在另一個查詢中使用它。循環遍歷表列

這是我當前的代碼,通過表中的循環數據庫:

<?php 
$host = "127.0.0.1"; 
$username = "username"; 
$password = "password"; 
$database = "database"; 

$link = new mysqli($host, $username, $password, $database); 

if($link->connect_error) 
{ 
    die("Connection died: ".$link->connect_error); 
} 

$showtables = $link->query("SHOW TABLES;"); 

foreach($showtables->fetch_all() as $table) 
{ 
    printf($table[0] . "\n"); 

    // what i'm trying to achieve: 
    foreach(/* ??? */ as $column) 
    { 
     printf("\t- ".$column."\n"); 
    } 
} 
?> 

任何人都可以借他們的手?謝謝!

+0

但是,爲什麼?順便說一句,信息模式將給你所有這些,而不需要任何循環,但我仍然想知道爲什麼你想要它! – Strawberry

+0

@Strawberry我創建了一個循環遍歷255表數據庫的腳本,並將每一列轉換爲LONGBLOB,然後轉換爲UTF8MB4,因爲它當前充滿了亂碼。 – shavit

回答

1

喜歡的東西:

$host = "127.0.0.1"; 
$username = "username"; 
$password = "password"; 
$database = "database"; 

$link = new mysqli($host, $username, $password, $database); 

if($link->connect_error) 
{ 
    die("Connection died: ".$link->connect_error); 
} 

$showtables = $link->query("DESCRIBE name_of_table;"); 

foreach($showtables->fetch_all() as $table) 
{ 
    printf($table[0] . "\n"); 
} 

如果你想在你的數據庫中的所有表使用SQL:

select * from information_schema.columns 
where table_schema = 'your_db' 
order by table_name,ordinal_position 
+0

不是,它只是給我表的名字,而不是實際檢查表的列! – shavit

+0

你可以在$ showtables-> fetch_all()上做一個var_dump來知道它是什麼樣的。 –

+0

例如,在xperience_stats表:array(1){ [0] => 字符串(15)「xperience_stats」 } – shavit