Php 列出所有MySQL表并排除特定表
我尝试从数据库返回所有MySQL表,并排除特定的表,例如用户。我使用以下代码打印我的表名:Php 列出所有MySQL表并排除特定表,php,mysql,Php,Mysql,我尝试从数据库返回所有MySQL表,并排除特定的表,例如用户。我使用以下代码打印我的表名: function findTables() { global $conn; global $DB; $query = "SHOW TABLES FROM $DB "; $showTablesFromDb = mysqli_query($conn, $query); while($row = mysqli_fetch_row($showTablesFromDb))
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>";
}
}
解决办法是:
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)
如果上述答案无效,请尝试以下方法:
SHOW TABLES FROM $DB WHERE Tables_in_$DB NOT LIKE 'foo'
您也可以通过创建一个包含您不需要的表的表来完成此操作,如下所示: 显示不在不允许的\u表中选择*的\u yourDBName中的表的表
不允许的\u表中的列的值是纯varchar。您的问题是什么?上面的代码显示所有表及其优点,但在过程中,我希望从循环中排除一个特定的表-例如usersFair-但正确的查询是:'显示表,其中\u在\uu$DB中不象$database\u name'。无论如何,谢谢你给我一个提示——我把它标记为AcceptedHanks,我知道像“a%”这样的显示表是有效的,然后假设不喜欢也有效。当时他很匆忙。我刚刚更新了帖子,提供了更多信息和演示。