显示 MySQL 数据库中 php 中的所有表名

Posted

技术标签:

【中文标题】显示 MySQL 数据库中 php 中的所有表名【英文标题】:Displaying all table names in php from MySQL database 【发布时间】:2012-03-27 22:26:04 【问题描述】:

好的,所以我对 php 和 SQL/mysql 还很陌生,因此感谢任何帮助。

我觉得我采取了正确的方法。我在 php.net 中搜索“MySQL 显示所有表名”,它返回了一个不推荐使用的方法,并建议在 SHOW TABLES [FROM db_name] [LIKE 'pattern'] 上使用 MySQL 查询我不确定“模式”是什么意思,但是,我搜索了“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';
?>

我没有收到任何错误。输出正是回显的内容,但没有表名。

【问题讨论】:

【参考方案1】:

代码中的方括号在 mysql 文档中用于指示可选参数组。它们不应该出现在实际查询中。

您真正需要的唯一命令是:

show tables;

如果你想要来自特定数据库的表,比如说数据库“books”,那么它就是

show tables from books;

如果您想查找名称与特定模式匹配的表,您只需要 LIKE 部分。例如,

show tables from books like '%book%';

会显示名称中某处带有“book”的表的名称。

此外,仅运行“显示表”查询不会产生任何您可以看到的输出。 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.

【讨论】:

【参考方案2】:

对于使用PDO statements的人

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

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

【讨论】:

【参考方案3】:
SHOW TABLES

将显示您数据库中的所有表。如果你想过滤你使用LIKE和通配符%的名字

SHOW TABLES FROM my_database LIKE '%user%'

将为您提供名称中包含“用户”的所有表,例如

users
user_pictures
mac_users

等等

【讨论】:

【参考方案4】:

mysql 文档中用于示例的常用括号应在“真实”查询中省略。

您似乎也没有在任何地方回显 mysql 查询的结果。 mysql_query 成功时返回一个 mysql 资源。 php 手册页还包含有关如何将 mysql 结果资源加载到数组中以进行回显和其他操作的说明。

【讨论】:

【参考方案5】:

查询应如下所示:

SHOW TABLES

SHOW TABLES FROM mydatabase

SHOW TABLES FROM mydatabase LIKE "tab%"

方括号 [] 中来自 MySQL 文档的内容是可选的。

【讨论】:

【参考方案6】:

您需要将 mysql_query 分配给一个变量(例如 $result),然后像显示来自数据库的正常结果一样显示该变量。

【讨论】:

这不起作用。还有其他建议吗?更新了我的问题以显示您建议的更改。 您需要像普通结果集一样循环 $result:while ($row = mysql_fetch_array($result, MYSQL_NUM)) echo $row[0]; 我也认为 SQL 语法可能有点偏离,如其他地方所述 - 去掉方括号中的所有内容【参考方案7】:

当然,您可以使用SHOW TABLES 查询您的数据库,然后遍历所有记录,但这是额外的代码行和工作。

PHP 有一个内置函数可以为您将所有表列出到一个数组中:

mysql_list_tables - 你可以在The PHP API page找到更多信息

【讨论】:

此功能现已完全删除。【参考方案8】:

//list_tables 表示数据库所有表

$tables = $this->db->list_tables();
foreach ($tables as $table)

  echo $table;

【讨论】:

如果您要回答一个多年前的问题,请说明您的答案比已经列出的答案更好,或者语言如何改变以允许您在以前没有答案的情况下回答。 list_tables 表示数据库所有表

以上是关于显示 MySQL 数据库中 php 中的所有表名的主要内容,如果未能解决你的问题,请参考以下文章

使用 PHP 列出 MySQL 数据库中的所有表

使用 PHP 选择并显示 MySQL 表中的所有字段以获取无限量的列

PHP 优化MySQL数据库中的所有表

使用php在单个mysql数据库表中的表中显示子类别及其父类别

使用 PHP 创建表并从 MySQL 填充

php和mysql如何加入表[重复]