2013-08-05 50 views
7

Tôi đang cố kiểm tra xem bảng có tồn tại không và nếu có thì sẽ thực hiện một số thao tác. Tôi tiếp tục nhận được một lỗi nói với tôi rằng bảng không tồn tại hơn là hoàn thành kiểm tra của tôi. Đây là mã:Kiểm tra xem bảng có tồn tại trên MySQL

$tableExists = $db->prepare("SHOW TABLES LIKE $table_array"); 
$tableExists->execute(); 
if($tableExists->rowCount() > 0) { 
    // do some code 
} else { 
    echo "Unable to add because table does not exists"; 
} 

UPDATE: mỗi gợi ý dưới đây, bây giờ tôi làm như sau:

$tableExists = $db->prepare("SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = ?"); 
$tableExists->execute(array($table_array)); 
if(!is_null($tableExist)) { 
    //do something 
} else { 
    echo "table does not exist; 
} 

Tuy nhiên, câu lệnh if dường như không làm việc để xác định xem bảng tồn tại hay không . Tôi có thể làm gì khác?

Trả lời

10

Hãy thử sử dụng information_schema hỏi nếu bàn tồn tại. Một cái gì đó như

SELECT 
    * 
FROM 
    information_schema 
WHERE TABLE_NAME = "$table_array" 

Hãy xem qua tất cả những gì information_schema giữ, bạn sẽ được ngạc nhiên bởi các thông tin mà nó đã lưu trữ về cơ sở dữ liệu của bạn :)

+1

Đó ... Là ... Tuyệt vời ... Và để nói rằng tôi đã lấy bảng đó như là một phần của các bảng xâm nhập phpMyAdmin ... :) – Salketer

+0

để "aprove" trả lời ... – jaczes

+0

Tên tôi là Alfred Salketer Arengard (Yeh, tôi biết ...), và tôi "aprove" câu trả lời này ... @jaczes;) – Salketer

1
if(mysql_num_rows(mysql_query("SHOW TABLES LIKE '".$table."'"))==1) 
    echo "Table exists"; 
else echo "Table does not exist"; 

ref: check if MySQL table exists or not

+0

Cảm ơn, tôi đã tìm kiếm và không tìm thấy câu trả lời khác – Danconia

+0

Tại sao tất cả các phiếu bầu đó lại trừ đi? Nó khắc phục vấn đề ... Không? – Salketer

+0

bạn có biết cách tôi có thể kiểm tra xem bảng có tồn tại với bản cập nhật ở trên không? – Danconia

0

Cố gắng này:

chọn trường hợp khi (chọn count (*) từ INFORMATION_SCHEMA.TABLES nơi TABLE_NAME = 'văn phòng') = 1 sau đó 'tồn tại' khác 'không tồn tại' kết thúc

+0

Xin chào, bạn có thể giải thích điều đó một lần nữa không? Đây là những gì tôi có bây giờ, tôi chỉ không biết làm thế nào để kiểm tra xem kết quả cho truy vấn là hợp lệ (bảng tồn tại) hay không. $ tableExists = $ db-> chuẩn bị ("SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME =?"); $ tableExists-> execute (array ($ table_array)); if (! is_null ($ tableExist)) {// do code} – Danconia

-1

Hãy thử điều này:

select * from table_schema //this is your database name  
where table_name // your table name  
= '$table_array' 

Hy vọng điều này phù hợp với bạn.

Các vấn đề liên quan