2016-03-16 9 views
6


私はデータベースからすべてのMySQLテーブルを返すようにします。すべてのMySQLテーブルをリストアップして特定のテーブルを除外します

function findTables() { 
    global $conn; 
    global $DB; 

    $query = "SHOW TABLES FROM $DB "; 
    $showTablesFromDb = mysqli_query($conn, $query); 
    while($row = mysqli_fetch_row($showTablesFromDb)) { 
     echo "<li><a href='admin.php?show={$row[0]}'>{$row[0]}</a></li>"; 
    } 
} 
+0

あなたの質問はありますか? –

+0

上記のコードは全てのテーブルとその素晴らしいものを表示していますが、処理中に特定のテーブルをループから除外したい - 例えば、ユーザ – Ganga

答えて

6

ソリューションは次のようになります:ここで

show tables where tables_in_$DB not like 'a%'; 

は、いくつかのデモです:私は私のテーブル名印刷するには、次のコードを使用し

mysql> show tables; 
+-----------------+ 
| Tables_in_test3 | 
+-----------------+ 
| a1    | 
| t1    | 
| t2    | 
+-----------------+ 
3 rows in set (0.00 sec) 

-- LIKE is simpler than NOT LIKE 
mysql> show tables like 'a%'; 
+----------------------+ 
| Tables_in_test3 (a%) | 
+----------------------+ 
| a1     | 
+----------------------+ 
1 row in set (0.00 sec) 

-- `show tables not like 'a%'` is not working, 
-- use the following way for NOT LIKE matching 
mysql> show tables where tables_in_test3 not like 'a%'; 
+-----------------+ 
| Tables_in_test3 | 
+-----------------+ 
| t1    | 
| t2    | 
+-----------------+ 
2 rows in set (0.01 sec) 
+0

十分に公正ですが、正しいクエリは です。 'tables_in_ $ DB NOT LIKE $ database_name'。とにかくヒントありがとうございました - 私はそれが受け入れられたとマークします – Ganga

+0

おかげで、私は ''% ''のような表を見せてくれることを知っていました。その時は急いでいた。私はちょうどより多くの情報とデモで、ポストを更新しました。 –

2

上記の答えは動作しない場合は、試してみてください:

SHOW TABLES FROM $DB WHERE Tables_in_$DB NOT LIKE 'foo' 
関連する問題