Apa cara terbaik untuk memeriksa apakah tabel ada di MySQL (sebaiknya melalui PDO di PHP) tanpa membuat pengecualian. Saya tidak ingin mem-parsing hasil "SHOW TABLES LIKE" dan sebagainya. Harus ada semacam kueri boolean?
123
Saya tidak tahu sintaks PDO untuk itu, tetapi ini tampaknya cukup mudah:
$result = mysql_query("SHOW TABLES LIKE 'myTable'");
$tableExists = mysql_num_rows($result) > 0;
mysql_*
fungsi, fungsi tersebut secara resmi tidak digunakan lagi , tidak lagi dipertahankan, dan akan dihapus di masa mendatang. Anda harus memperbarui kode Anda dengan PDO atau MySQLi untuk memastikan fungsionalitas proyek Anda di masa mendatang.Jika Anda menggunakan MySQL 5.0 dan yang lebih baru, Anda dapat mencoba:
Hasil apapun menunjukkan tabel tersebut ada.
Dari: http://www.electrictoolbox.com/check-if-mysql-table-exists/
sumber
Menggunakan mysqli saya telah membuat fungsi berikut. Dengan asumsi Anda memiliki instance mysqli yang disebut $ con.
Semoga membantu.
Peringatan: seperti yang disarankan oleh @jcaron, fungsi ini bisa jadi rentan terhadap sqlinjection attacs, jadi pastikan
$table
var Anda bersih atau bahkan lebih baik gunakan kueri berparameterisasi .sumber
Ini diposting hanya jika ada yang datang mencari pertanyaan ini. Meski sudah terjawab sedikit. Beberapa balasan membuatnya lebih kompleks dari yang seharusnya.
Untuk mysql * saya menggunakan:
Di PDO saya menggunakan:
Dengan ini saya hanya mendorong kondisi lain ke dalam atau. Dan untuk kebutuhan saya, saya hanya perlu mati. Padahal Anda bisa mengatur atau untuk hal lain. Beberapa mungkin lebih suka jika / lain jika / lain. Yang kemudian menghapus atau dan kemudian menyediakan if / else if / else.
sumber
Inilah solusi saya yang saya sukai saat menggunakan prosedur tersimpan. Fungsi mysql kustom untuk memeriksa tabel yang ada di database saat ini.
sumber
Karena "Tampilkan tabel" mungkin lambat pada database yang lebih besar, saya sarankan untuk menggunakan "DESCRIBE" dan periksa apakah Anda mendapatkan true / false sebagai hasilnya
sumber
sumber
Kerangka Zend
sumber
Jika alasan Anda ingin melakukan ini adalah pembuatan tabel bersyarat, maka 'BUAT TABEL JIKA TIDAK ADA' tampaknya ideal untuk pekerjaan itu. Sampai saya menemukan ini, saya menggunakan metode 'DESCRIBE' di atas. Info lebih lanjut di sini: MySQL "CREATE TABLE IF NOT EXISTS" -> Error 1050
sumber
Mengapa Anda membuatnya begitu sulit untuk dipahami?
sumber