2012-10-06 44 views
2

一旦數據庫被創建,如何檢查數據庫是否包含使用PHP的表或表結構?使用PHP檢查MySQL數據庫是否爲空

場景:

當用戶訪問它創建一個沒有表默認數據庫的系統第一次,則在下一步驟中,假設用戶通過上傳.sql文件導入定製的數據庫結構。我需要檢查他們是否導入了數據庫,或者通過檢查以前自動創建的默認數據庫是否具有任何表結構來跳過該步驟。

當我執行mysql_list_tables(defaultDBName)它只是返回您運行的SQL語句已經成功執行」,但沒有結果phpMyAdmin的設置。

回答

6
<?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),而不是通過$結果循環..

1

您可以使用show tables命令來檢查數據庫中有哪些表。如果它恢復爲空,那麼數據庫是空的。

2

如果你覺得你會需要一些地方在未來的條款或類似這樣的東西,然後使用:

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' 

回報

4

使用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. 
    } 

?> 
相關問題