【问题标题】:How to display all table names from particular mysql database in php如何在php中显示特定mysql数据库中的所有表名
【发布时间】:2018-01-10 01:26:27
【问题描述】:

我正在尝试显示我的数据库中的所有表名。这是我的代码:

<?php
define('DB_HOST', 'localhost');
define('DB_USERNAME', 'root');
define('DB_PASSWORD', '');
define('DB_NAME', 'nucleus');
$db=new mysqli(DB_HOST,DB_USERNAME,DB_PASSWORD,DB_NAME);
$query = $db->prepare('SHOW TABLES FROM `nucleus`');
$query->execute();
while($rows = $query->fetch()){
     echo " $rows";
}
?>

每个条目都显示1,我不知道为什么。有什么解决办法吗?

【问题讨论】:

  • 请编辑以改进格式(“引用”格式对于您的问题主体是错误的,并且您的代码的可读性可以通过更紧凑来提高)。
  • 那是因为你没有绑定你的结果。看手册示例php.net/manual/en/mysqli-stmt.fetch.php
  • 是的,我得到了答案

标签: php mysql


【解决方案1】:

要获取所有表的名称,请使用:

SELECT table_name FROM information_schema.tables;

要从特定数据库中获取表的名称,请使用:

SELECT table_name FROM information_schema.tables where table_schema='<your_database_name>';

更多详情见:http://dev.mysql.com/doc/refman/5.0/en/information-schema.html

【讨论】:

  • 我有一个更简单的版本 :) ,谢谢
  • 这是在回答不同的问题。
【解决方案2】:

所以,任何人都在寻找可能的答案,这里是:

<?php
$query = $db->prepare('SHOW TABLES FROM `databasename`');
$query->execute();
$query->bind_result($tables);
while( $query->fetch()){
         echo " $tables";
}
?>

【讨论】:

  • 答案是$rows是一个数组,而不是字符串。 echo $rows['TABLES'];... 或输出$rows 看看索引是什么。
【解决方案3】:
SHOW TABLE STATUS

如果已经建立连接,则无需提及数据库名称

【讨论】:

    【解决方案4】:

    每个条目都显示 1,我不知道为什么

    fetch() 返回一个布尔值,因此您的结果为1。每次找到一行时它都会返回true

    您需要使用bind_result() 将结果绑定到可以为每一行引用的变量。

    $stmt->prepare("SELECT table_name FROM information_schema.tables where table_schema=?")
    $stmt->bind_param('s', 'YOUR_DB_NAME');
    $stmt->execute();
    $stmt->bind_result($table);
    $stmt->store_result();
    while($stmt->fetch()) {
        echo $table;
    }
    $stmt->close();
    

    【讨论】:

      【解决方案5】:

      我做了一个完整的解决方案,有两种方法可以得到SQL结果,我优先得到结果,$ROW会接收数组数据来显示:

          <?php 
      
              $connection=conectadb();
              $sql = 'SHOW TABLES FROM pmsai';
      
              $result = $connection->query($sql);
      
              if (!$result) {
                  echo "DB Error, could not list tables\n";
                  echo 'MySQL Error: ' . mysqli_error();
                  exit;
              }
      
              while ($row = $result->fetch_array()) {
                  echo "<p>Table: {$row[0]}</p>";
              }
      
              mysqli_close($connection);          
      
          ?>
      

      【讨论】:

      • 虽然此代码 sn-p 可以解决问题,但 including an explanation 有助于提高您的回复质量。请记住,您是在为将来的读者回答问题,而这些人可能不知道您提出代码建议的原因。
      猜你喜欢
      • 1970-01-01
      • 2013-12-09
      • 2013-08-11
      • 2019-09-10
      • 1970-01-01
      • 2020-12-19
      • 1970-01-01
      • 1970-01-01
      • 2018-07-30
      相关资源
      最近更新 更多