2016-08-23 2 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

뭔가 같은 :

당신이 당신의 데이터베이스의 모든 테이블이 SQL 사용하려는 경우
$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"); 
} 

:

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 테이블에서 : [0] => 문자열 (15) "xperience_stats" } – shavit