循环遍历表列

问题描述:

我有一个查询应该循环遍历数据库中的所有表。它做得很好,我通过输出表名来测试它。
但是,我试图循环访问数据库中的每一列,以便我可以在另一个查询中使用它。循环遍历表列

这是我当前的代码,通过表中的循环数据库:

<?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

喜欢的东西:

$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