2012-03-27 5 views
8

좋아요, 그래서 저는 PHP와 SQL/MySQL을 처음 보았습니다.MySQL 데이터베이스에서 PHP의 모든 테이블 이름 표시

나는 올바른 접근 방식을 취한 것처럼 느낍니다. 나는 "MySQL의 모든 테이블 이름보기"에 대해 php.net을 검색했으며, 더 이상 사용되지 않는 메소드를 반환했으며 MySQL 쿼리를 사용하여 제안했습니다. SHOW TABLES [FROM db_name] [LIKE 'pattern'] "패턴"의 의미는 모르겠지만 "SQL 와일드 카드"를 검색하고 " % 기호. 내가 찾은 모든 것에 따르면,이 작업은 끝나고 테이블 이름을 출력해야하지만 그렇지 않습니다. 어떤 제안? 미리 감사드립니다.

<?php 
if ($_REQUEST["username"]=="coke"&&$_REQUEST["password"]=="pepsi"){ 
echo 'You have successfully logged in.'; 
echo '<br />'; 
echo 'These are your tables:'; 
echo '<br />'; 

    $link = mysql_connect("sql2.njit.edu", "username", "password"); 

    mysql_select_db("db_name") or die(mysql_error()); 

    $result = mysql_query('SHOW TABLES [FROM db_name] [LIKE '%']'); 
    echo $result; 
} 
else 
echo 'You did not provide the proper authentication'; 
?> 

오류가 발생하지 않습니다. 출력은 정확히 에코되었지만 테이블 이름은 없습니다.

답변

38

코드의 대괄호는 mysql 문서에서 선택적 매개 변수 그룹을 나타 내기 위해 사용됩니다. 실제 쿼리에 있어서는 안됩니다.

당신이 실제로 필요로하는 유일한 명령은 다음과 같습니다 특정 데이터베이스에서 테이블을 원하는 경우

show tables; 

이의 다음은

show tables from books; 

에만 필요한 것, 데이터베이스 "책"을 가정 해 봅시다 이름이 특정 패턴과 일치하는 테이블을 찾으려는 경우 LIKE 부분. 예를 들어,

show tables from books like '%book%'; 

당신에게 "책"어딘가에 이름에있는 테이블의 이름을 표시합니다.

"show tables"쿼리를 실행해도 볼 수있는 출력이 생성되지 않습니다. SQL은 쿼리에 응답 한 다음 PHP에 전달하지만 PHP가 페이지에 표시하도록 지시해야합니다.

SQL에 익숙하지 않은 것으로 들리므로 명령 행에서 mysql 클라이언트를 실행하거나 (시스템에 phpmyadmin을 설치 한 경우) 사용하는 것이 좋습니다. 이렇게하면 쿼리를 보내고 결과를받는 PHP의 함수를 거치지 않고도 다양한 쿼리의 결과를 볼 수 있습니다.

PHP를 사용해야하는 경우 다음은 매우 간단한 데모입니다. 데이터베이스에 연결 한 후이 코드를보십시오 :

$result = mysql_query("show tables"); // run the query and assign the result to $result 
while($table = mysql_fetch_array($result)) { // go through each row that was returned in $result 
    echo($table[0] . "<BR>"); // print the table that was returned on that row. 
} 
0

변수 (예 : $ result)에 mysql_query를 할당 한 다음 데이터베이스의 정상적인 결과처럼이 변수를 표시해야합니다. [] 선택 사항 대괄호로 MySQL의 문서에서

SHOW TABLES 

SHOW TABLES FROM mydatabase 

SHOW TABLES FROM mydatabase LIKE "tab%" 

것들 : 같은

+0

이것은 작동하지 않았습니다. 다른 제안? 내 질문이 업데이트되어 제안한 변경 사항을 보여줍니다. – EGHDK

+0

일반적인 결과 집합처럼 $ result를 반복 할 필요가 있습니다 : while ($ row = mysql_fetch_array ($ result, MYSQL_NUM)) { echo $ row [0]; }' –

+0

또한 나는 SQL 문법이 다른 곳에서 언급 한 것처럼 조금 벗어날 수도 있다고 생각한다. 대괄호 안에있는 모든 것을 제거한다. –

1

쿼리가 보일 것입니다.

1
SHOW TABLES 

이 DB의 모든 테이블을 표시합니다.당신은 예를

users 
user_pictures 
mac_users 

1

브래킷을 위해, %

SHOW TABLES FROM my_database LIKE '%user%' 

당신에게 '사용자'를 포함 이름의 모든 테이블을 줄 것이다 당신이 LIKE 사용하는 이름과 와일드 카드를 필터링하려면 그 예제는 mysql 문서에서 일반적으로 사용되는데, '실제'쿼리에서는 생략해야합니다.

mysql 쿼리의 결과가 어디에도 나타나지 않는 것으로 보입니다. mysql_query은 성공시 mysql 리소스를 반환합니다. PHP 매뉴얼 페이지에는 echo 결과와 다른 조작을 위해 mysql 결과 리소스를 배열에로드하는 방법에 대한 지침도 포함되어 있습니다. PDO statements

$query = $db->prepare('show tables'); 
$query->execute(); 

while($rows = $query->fetch(PDO::FETCH_ASSOC)){ 
    var_dump($rows); 
} 
6

.

PHP 당신을 위해 배열로 모든 테이블을 나열하는 기능에 구축했습니다

mysql_list_tables을 - 당신이 The PHP API page

0

모든 레코드를 SHOW TABLES 다음 루프를 사용하여 데이터베이스를 조회 할 수 있습니다 물론 있지만 추가 코드 라인과 작업을하다 사용하는 사람들을 위해

+0

이 함수는 이제 완전히 제거되었다. – NaveenDA

1

// list_tables에서 그것에 대해 더 많은 정보를 찾을 수있는 모든 테이블 데이터베이스를 의미합니다

$tables = $this->db->list_tables(); 
foreach ($tables as $table) 
{ 
    echo $table; 
} 
+5

몇 살이되는 질문에 답 하시려면 이미 열거 된 답변보다 어떻게 답이 좋았는지 또는 이전에하지 않았을 때 언어가 어떻게 변했는지 설명하십시오. –

+0

list_tables는 모든 테이블을 의미합니다. –

관련 문제