Saya ingin memasukkan semua nama col tabel mysql ke dalam array di php?
Apakah ada pertanyaan untuk ini?
Cara terbaik adalah dengan menggunakan database virtual metadata INFORMATION_SCHEMA . Khususnya tabel INFORMATION_SCHEMA.COLUMNS ...
SELECT `COLUMN_NAME`
FROM `INFORMATION_SCHEMA`.`COLUMNS`
WHERE `TABLE_SCHEMA`='yourdatabasename'
AND `TABLE_NAME`='yourtablename';
Ini SANGAT kuat, dan dapat memberi Anda BANYAK informasi tanpa perlu mem-parsing teks (Seperti jenis kolom, apakah kolom tersebut dapat dibatalkan, ukuran kolom maks, set karakter, dll) ...
Oh, dan itu SQL standar (Padahal SHOW ...
ekstensi khusus MySQL) ...
Untuk informasi lebih lanjut tentang perbedaan antara SHOW...
dan menggunakan INFORMATION_SCHEMA
tabel, lihat DokumentasiINFORMATION_SCHEMA
MySQL secara umum ...
SET @@SESSION.sql_mode = 'ANSI_QUOTES';
sebelum tangan juga, tetapi saya benar-benar tidak suka itu. Dan saya tidak punya masalah dengan tanda centang kembali untuk penetapan batas pengenal. Bahkan, saya suka mereka lebih baik daripada tanda kutip ganda (tanda kutip ganda membuat kueri terasa salah bagi saya) ... Untuk masing-masing sendiri ...Anda dapat menggunakan permintaan berikut untuk MYSQL:
Di bawah ini adalah contoh kode yang menunjukkan Bagaimana menerapkan sintaksis di atas di php untuk mendaftar nama-nama kolom:
Untuk Perincian tentang keluaran
SHOW COLUMNS FROM TABLE
kunjungan: MySQL Refrence.sumber
DESC TableName;
;-)Sepertinya ada 2 cara:
atau
Lebih lanjut di
DESCRIBE
sini: http://dev.mysql.com/doc/refman/5.0/id/describe.htmlsumber
DESCRIBE
hanya jalan pintas untukSHOW COLUMNS FROM
.DESC
bahkan lebih pendekDESCRIBE
!Saya telah melakukan ini di masa lalu.
sumber
Sunting : Hari ini saya belajar cara yang lebih baik untuk melakukan ini. Silakan lihat jawaban ircmaxell.
Parsing output dari
SHOW COLUMNS FROM table;
Berikut ini lebih lanjut tentang hal ini di sini: http://dev.mysql.com/doc/refman/5.0/id/show-columns.html
sumber
Gunakan
mysql_fetch_field()
untuk melihat semua data kolom. Lihat manual ."Peringatan, ekstensi ini sudah tidak digunakan lagi pada PHP 5.5.0, dan akan dihapus di masa mendatang."
sumber
mysqli_num_fields()
danmysqli_fetch_field_direct()
merupakan metode yang diperbaruiFungsi PHP lama "mysql_list_fields ()" sudah usang. Jadi, hari ini cara terbaik untuk mendapatkan nama bidang adalah kueri "SHOW COLUMNS FROM table_name [LIKE 'name']". Jadi, inilah sedikit contohnya:
sumber
sumber
Tidak yakin apakah ini yang Anda cari, tetapi ini berhasil untuk saya:
Itu mengembalikan array sederhana dari nama kolom / nama variabel di tabel atau array Anda sebagai string, yang adalah apa yang saya butuhkan untuk membangun query MySQL secara dinamis. Rasa frustrasi saya adalah saya tidak tahu bagaimana cara mengindeks array di PHP dengan sangat baik, jadi saya tidak yakin apa yang harus dilakukan dengan hasil dari DESC atau SHOW. Semoga jawaban saya bermanfaat bagi pemula seperti saya!
Untuk memeriksa hasil:
print_r($col_names);
sumber
ketika Anda ingin memeriksa struktur semua tabel Anda dengan beberapa yang diajukan kemudian gunakan kode ini. Dalam kueri ini saya memilih nama_kolom, nama_kolom dan nama_kolom untuk rincian lebih lanjut. Saya menggunakan order by column_type sehingga saya bisa melihatnya dengan mudah.
Jika Anda ingin memeriksa hanya tipe ganda yang diajukan maka Anda dapat melakukannya dengan mudah
jika Anda ingin memeriksa bidang mana yang memungkinkan jenis null dll, maka Anda dapat menggunakan ini
Anda ingin memeriksa lebih dari tautan ini juga membantu Anda.
https://dev.mysql.com/doc/refman/5.7/en/columns-table.html
sumber
TAMPILKAN KOLOM di mysql 5.1 (bukan 5.5) menggunakan tabel disk sementara.
Jadi bisa dianggap lambat untuk beberapa kasus. Setidaknya, itu dapat meningkatkan nilai Created_tmp_disk_tables Anda . Bayangkan satu tabel disk sementara untuk setiap koneksi atau setiap permintaan halaman.
SHOW COLUMNS tidak terlalu lambat, mungkin karena menggunakan cache sistem file. Phpmyadmin berkata ~ 0.5ms secara konsisten. Ini tidak seberapa dibandingkan dengan 500ms-1000ms melayani halaman wordpress. Tapi tetap saja, ada saatnya itu penting. Ada keterlibatan sistem disk, Anda tidak pernah tahu apa yang terjadi ketika server sibuk, cache penuh, hdd macet dll.
Mengambil nama kolom melalui SELECT * FROM ... LIMIT 1 adalah sekitar ~ 0,1 ms, dan dapat menggunakan cache kueri juga.
Jadi di sini adalah kode kecil saya yang dioptimalkan untuk mendapatkan nama kolom dari sebuah tabel, tanpa menggunakan kolom acara jika mungkin:
Catatan:
sumber
Coba yang ini saya pribadi menggunakannya:
sumber
DI WORDPRESS:
sumber
Pertanyaan ini sudah tua, tetapi saya sampai di sini mencari cara untuk menemukan kueri yang diberikan nama bidangnya secara dinamis (tidak harus hanya bidang tabel). Dan karena orang terus menunjuk ini sebagai jawaban untuk tugas yang diberikan itu dalam pertanyaan terkait lainnya, saya membagikan cara saya menemukannya dapat dilakukan, menggunakan kiat Gavin Simpson:
Ini dapat dengan mudah diubah untuk memasukkan nama bidang dalam array.
Menggunakan sederhana:
$sql="SELECT * FROM myTable LIMIT 1"
dapat memberi Anda bidang tabel apa pun, tanpa perlu menggunakanSHOW COLUMNS
atau modul php tambahan, jika diperlukan (menghapus bagian dump data).Semoga ini bisa membantu orang lain.
sumber
jika Anda menggunakan php, gunakan intisari ini .
itu bisa mendapatkan pilih bidang info lengkap tanpa hasil, dan semua bidang khusus seperti:
jika sql di atas tidak mengembalikan data, juga akan mendapatkan nama bidang aname, bname, nama bidang b lainnya
hanya dua baris:
sumber
Kueri ini mengambil daftar semua kolom dalam database tanpa harus menentukan nama tabel. Ini mengembalikan daftar nama kolom saja:
Namun, ketika saya menjalankan kueri ini di phpmyadmin, ia menampilkan serangkaian kesalahan. Meskipun demikian, itu berhasil. Jadi gunakan dengan hati-hati.
sumber
Solusi paling sederhana dari semua Jawaban:
atau
atau
sumber
jika Anda hanya perlu nama dan tipe bidang (mungkin agar mudah menyalin-paste ke Excel):
menghapus
jika Anda ingin semua tipe data
sumber
saya bukan ahli, tetapi ini bekerja untuk saya ..
sumber
Saya telah mencoba kueri ini di SQL Server dan ini berhasil untuk saya:
sumber