创建数据库后,如何使用PHP来检查数据库是否包含表或表结构?
情境:
当用户第一次访问系统时,它会创建一个没有表的默认数据库,然后在下一步中,用户应该通过上传.sql
文件来导入自定义数据库结构。我需要检查他们是否已导入数据库,或者通过检查先前自动创建的默认数据库是否具有任何表结构来跳过该步骤。
当我执行mysql_list_tables(defaultDBName)
时,它只返回“您的SQL查询已成功执行”,但 phpMyAdmin
答案 0 :(得分: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 ..
答案 1 :(得分: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.
}
?>
答案 2 :(得分: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'
返回
答案 3 :(得分:0)
您可以使用show tables
命令检查数据库中的表。如果它返回空,则数据库为空。