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

时间:2012-03-27 22:26:05

标签: php mysql sql

好吧,所以我对PHP和SQL / MySQL相当新,所以任何帮助都会受到赞赏。

我觉得我采取了正确的方法。我在php.net上搜索“MySQL show all tables names”,它返回了一个弃用的方法并建议在SHOW TABLES [FROM db_name] [LIKE 'pattern']上使用MySQL查询我不确定“模式”是什么意思但是,我搜索了“SQL Wildcard”并得到“%”符号。根据我发现的一切,这应该工作并在最后输出表名,但事实并非如此。有什么建议?提前谢谢。

<?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';
?>

我没有错误。输出正是回声,但没有表名。

8 个答案:

答案 0 :(得分:44)

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

您实际需要的唯一命令是:

show tables;

如果你想要来自特定数据库的表,让我们说数据库“books”,那就是

show tables from books;

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

show tables from books like '%book%';

会显示名称中某处有“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.
}

答案 1 :(得分:7)

对于使用PDO statements

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

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

答案 2 :(得分:1)

查询应如下所示:

SHOW TABLES

SHOW TABLES FROM mydatabase

SHOW TABLES FROM mydatabase LIKE "tab%"

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

答案 3 :(得分:1)

SHOW TABLES

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

的名称
SHOW TABLES FROM my_database LIKE '%user%'

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

users
user_pictures
mac_users

答案 4 :(得分:1)

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

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

答案 5 :(得分:0)

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

答案 6 :(得分:0)

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

PHP有一个内置函数可以将所有表列入数组:

  

mysql_list_tables - 您可以在The PHP API page

找到有关它的更多信息

答案 7 :(得分:0)

// list_tables表示数据库所有表

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