Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm cách nào để kiểm tra xem bảng MySQL có tồn tại với PHP hay không?

// Select 1 from table_name will return false if the table does not exist.
$val = mysql_query('select 1 from `table_name` LIMIT 1');

if($val !== FALSE)
{
   //DO SOMETHING! IT EXISTS!
}
else
{
    //I can't find it...
}

Phải thừa nhận rằng nó giống Pythonic hơn thành ngữ PHP, nhưng mặt khác, bạn không phải lo lắng về việc xử lý một lượng lớn dữ liệu bổ sung.

Chỉnh sửa

Vì vậy, câu trả lời này đã được đánh dấu ít nhất hai lần tính đến thời điểm tôi viết thư này. Giả sử rằng tôi đã mắc phải một số lỗi lớn, tôi đã tiếp tục và chạy một số điểm chuẩn và đây là những gì tôi nhận thấy rằng giải pháp của tôi nhanh hơn 10% so với giải pháp thay thế gần nhất khi bảng không tồn tại và nhanh hơn 25% khi bảng tồn tại:

:::::::::::::::::::::::::BEGINNING NON-EXISTING TABLE::::::::::::::::::::::::::::::
23.35501408577 for bad select
25.408507823944 for select from schema num rows -- calls mysql_num_rows on select... from information_schema.
25.336688995361 for select from schema fetch row -- calls mysql_fetch_row on select... from information_schema result
50.669058799744 for SHOW TABLES FROM test
:::::::::::::::::::::::::BEGINNING EXISTING TABLE::::::::::::::::::::::::::::::
15.293519973755 for good select
20.784908056259 for select from schema num rows
21.038464069366 for select from schema fetch row
50.400309085846 for SHOW TABLES FROM test

Tôi đã thử chạy điều này với DESC, nhưng tôi đã hết thời gian chờ sau 276 giây (24 giây cho câu trả lời của tôi, 276 không hoàn thành mô tả của một bảng không tồn tại).

Để có biện pháp tốt, tôi đang đo điểm chuẩn so với một lược đồ chỉ có bốn bảng trong đó và đây là bản cài đặt MySQL gần như mới (đây là cơ sở dữ liệu duy nhất cho đến nay). Để xem kết xuất, hãy xem tại đây .

VÀ HƠN THẾ NỮA

Giải pháp cụ thể này cũng độc lập với cơ sở dữ liệu hơn vì cùng một truy vấn sẽ hoạt động trong PgSQL và Oracle.

CUỐI CÙNG

mysql_query() trả về FALSE cho các lỗi không phải là "bảng này không tồn tại".

Nếu bạn cần đảm bảo rằng bảng không tồn tại, sử dụng mysql_errno() để lấy mã lỗi và so sánh nó với Lỗi MySQL .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tìm kiếm phân biệt chữ hoa chữ thường MYSQL cho trường utf8_bin

  2. Làm thế nào để lưu trữ một mảng vào mysql?

  3. LỖI 1356 (HY000):Xem các tham chiếu của 'mysql.user' không hợp lệ (các) bảng hoặc (các) cột hoặc (các) hàm hoặc bộ định nghĩa / người gọi của chế độ xem thiếu quyền sử dụng chúng

  4. Cho phép các ký tự không phải ascii trong cơ sở dữ liệu MySQL

  5. Truy cập Cơ sở dữ liệu MySQL từ Dự án VB.NET 2008 của tôi