2011-01-16 8 views
0

이 코드를 사용하여 테이블 이름을 가져 와서 변수에 저장하려고합니다.이상한 PHP 출력

<?php 
connectDB(); 
$sql = "SHOW TABLES"; 
$result = mysql_query($sql); 
$tables = mysql_fetch_array($result); 
    foreach ($tables as $table) { 
     $table_name = $table[0]; 
     echo $table_name; 
    } 
closeConn(); 
?> 
하나

, 그 출력 'AA'와 'BB'난 내가 모든 테이블에 대한 몇 가지 코드를 실행하고 싶은 것을, DB를 두 테이블의 이름이 arent 알고 배열 인덱스를 변경하는 경우 DB를 삽입하고 그 코드에서 사용할 수있는 변수에 테이블 이름을 삽입 하시겠습니까? 내가 어떻게 그럴 수 있니?

답변

3
$tables = mysql_fetch_array($result); 

mysql_fetch_array은 전체 세트가 아닌 하나의 행을 가져옵니다. 즉, $table[0]을 수행하면 실제로 행의 각 필드에 대한 문자열 값을 처리하고 있음을 의미합니다.

대신 루프 내부의 mysql_fetch_array을 넣어해야합니다

while ($table = mysql_fetch_array($result)) { 
    $table_name = $table[0]; 
    echo $table_name; 
} 
+0

'echo "$ table_name \ n";' – StasM

+0

감사합니다. 왜 이것이 두 번째 테이블에서 시작하여 세 번째 테이블 중 두 개만 인쇄하고 첫 번째 테이블은 무시하는지 어떤 생각입니까? – benhowdle89

+0

@StasM 이것은'$ table_name'의 최종 목적이 아니라고 생각합니다. 그렇습니다. 아마도 그것은 좋은 제안 일 것입니다. – lonesomeday

1

SHOW TABLES은 행 당 하나의 테이블 이름으로 테이블을 리턴합니다. 테이블에 행이로는 한 행 테이블의 검색하기 때문에 당신은 ..., 이런 식으로 뭔가의

생각해 mysql_fetch_array 많은 시간을 사용해야합니다

while($row = mysql_fetch_array($result)) { 
    $table_name = $row[0]; 
    // ... 
} 
0

$의 SQL을 = " 쇼 테이블 "; $ result = mysql_query ($ sql);

while ($row = mysql_fetch_array($result, MYSQL_BOTH)) 
{ 
    $tables[] = $row[0]; 
} 

// To Display 
foreach ($tables as $table) { 

    $table_name = $table; 
    echo $table_name; 
}