Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana saya bisa memeriksa apakah ada tabel MySQL dengan PHP?

// 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...
}

Memang, ini lebih Pythonic daripada idiom PHP, tetapi di sisi lain, Anda tidak perlu khawatir berurusan dengan jumlah data tambahan yang berlebihan.

Sunting

Jadi, jawaban ini telah ditandai setidaknya dua kali sejak saya menulis pesan ini. Dengan asumsi bahwa saya telah membuat beberapa kesalahan besar, saya pergi dan menjalankan beberapa benchmark , dan inilah yang saya temukan bahwa solusi saya lebih dari 10% lebih cepat daripada alternatif terdekat saat tabel tidak ada, dan lebih dari 25% lebih cepat saat tabel memang ada:

:::::::::::::::::::::::::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

Saya mencoba menjalankan ini terhadap DESC, tetapi saya memiliki batas waktu setelah 276 detik (24 detik untuk jawaban saya, 276 untuk gagal menyelesaikan deskripsi tabel yang tidak ada).

Untuk ukuran yang baik, saya membandingkan skema dengan hanya empat tabel di dalamnya dan ini adalah instalasi MySQL yang hampir baru (ini adalah satu-satunya database sejauh ini). Untuk melihat ekspor, lihat di sini .

DAN LAINNYA

Solusi khusus ini juga lebih independen terhadap basis data karena kueri yang sama akan berfungsi di PgSQL dan Oracle.

AKHIRNYA

mysql_query() mengembalikan FALSE untuk kesalahan yang bukan "tabel ini tidak ada".

Jika Anda perlu menjamin bahwa tabel tidak ada, gunakan mysql_errno() untuk mendapatkan kode kesalahan dan membandingkannya dengan Kesalahan 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. MySQL:Cara sederhana untuk mengubah nilai bidang int

  2. tabel memperbarui ruang kosong saat pengguna tidak memasukkan apa pun ke kotak teks

  3. Cara Install MySQL 8 Terbaru di Debian 10

  4. Backup database MySQL secara otomatis di server linux

  5. Menginstal Percona XtraDB Cluster di CentOS 7