Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在php中显示特定mysql数据库中的所有表名_Php_Mysql - Fatal编程技术网

如何在php中显示特定mysql数据库中的所有表名

如何在php中显示特定mysql数据库中的所有表名,php,mysql,Php,Mysql,我正在尝试显示数据库中的所有表名。这是我的代码: <?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 F

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

<?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
,我不知道为什么。对此有何解决方案?

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

SELECT table_name FROM information_schema.tables;
要从特定数据库获取表的名称,请使用:

SELECT table_name FROM information_schema.tables where table_schema='<your_database_name>';
从information_schema.tables中选择table_name,其中table_schema='';

有关更多详细信息,请参见:

因此,任何想要寻找可能答案的人,请点击这里:

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

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

返回布尔值,因此返回
1
的结果。它将在每次找到一行时返回
true

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

$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();

我做了一个完整的解决方案,有两种方法可以获得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);          

    ?>


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

请编辑以改进格式(问题正文中的“引号”格式是错误的,代码的可读性可以通过更加紧凑来提高)。这是因为您没有绑定结果。看看手动示例是的,我得到了答案,我得到了一个更简单的版本:),无论如何,这是在回答一个不同的问题。答案是
$rows
是一个数组,而不是字符串<代码>echo$行['TABLES']。。。或者输出
$rows
并查看索引是什么。虽然此代码片段可以解决问题,但有助于提高响应的质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因。
SHOW TABLE STATUS