3

创建数据库后,如何使用 PHP 检查数据库是否包含表或表结构?

设想:

当用户第一次访问系统时,它会创建一个没有表的默认数据库,然后在下一步中,用户应该通过上传.sql文件来导入自定义的数据库结构。我需要通过检查之前自动创建的默认数据库是否具有任何表结构来检查他们是否已导入数据库或已跳过该步骤。

当我执行mysql_list_tables(defaultDBName)它只返回您的 SQL 查询已成功执行” ,但在phpMyAdmin中没有结果集。

4

4 回答 4

7
<?php
$dbname = 'mysql_dbname';

if (!mysql_connect('mysql_host', 'mysql_user', 'mysql_password')) {
    echo 'Could not connect to mysql';
    exit;
}

$sql = "SHOW TABLES FROM $dbname";
$result = mysql_query($sql);

if (!$result) {
    echo "DB Error, could not list tables\n";
    echo 'MySQL Error: ' . mysql_error();
    exit;
}

while ($row = mysql_fetch_row($result)) {
    echo "Table: {$row[0]}\n";
}

mysql_free_result($result);
?>

来自文档http://php.net/manual/en/function.mysql-list-tables.php

您可以使用if(mysql_num_rows($result) > 0)而不是循环通过 $result..

于 2012-10-06T17:47:17.450 回答
3

不鼓励使用 mysql_query 和 mysql_list_tables。相反,建议您使用 mysqli 函数。

<?php
    $link = mysqli_connect("localhost", "my_user", "my_password", "world");

    if ($result = mysqli_query($link,"SHOW TABLES [FROM db_name] [LIKE 'pattern']")) {
        // Check mysqli_num_rows($result). 0 means you do not have your table.
    }

 ?>
于 2012-10-06T17:55:06.043 回答
1

如果您觉得将来需要一些 where 子句或类似的东西,请使用:

SELECT table_name FROM information_schema.tables WHERE table_schema = 'somedbname'

如果您正在寻找特定的表格或表格,您可以使用

SELECT table_name FROM information_schema.tables WHERE table_schema = 'dbname' AND table_name = 'tablename'

如果您想了解更多信息,请查看

SELECT * FROM information_schema.tables WHERE table_schema = 'somedbname'

返回

于 2012-10-06T17:53:54.053 回答
0

您可以使用该show tables命令检查数据库中有哪些表。如果返回为空,则数据库为空。

于 2012-10-06T17:46:24.323 回答