Apakah ada cara untuk mengambil nama kolom dari tabel di mysql? menggunakan php
Apakah ada cara untuk mengambil nama kolom dari tabel di mysql? menggunakan php
Jawaban:
Anda dapat menggunakan DESCRIBE :
DESCRIBE my_table;
Atau dalam versi yang lebih baru Anda dapat menggunakan INFORMATION_SCHEMA :
SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'my_database' AND TABLE_NAME = 'my_table';
Atau Anda dapat menggunakan SHOW COLUMNS :
SHOW COLUMNS FROM my_table;
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'db_name' AND COLUMN_NAME = 'col_name';
desc my_table;
:-)
DESC
untuk menggambarkan dapat dengan mudah dikacaukan dengan DESC
untuk turun. Jumlah nominal byte yang Anda simpan karena kurangnya keterbacaan tidak sepadan.
Pernyataan SQL berikut ini hampir setara:
SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'tbl_name'
[AND table_schema = 'db_name']
[AND column_name LIKE 'wild']
SHOW COLUMNS
FROM tbl_name
[FROM db_name]
[LIKE 'wild']
Referensi: INFORMATION_SCHEMA COLUMNS
SHOW COLUMNS
mengembalikan tabel yang berisi nama kolom, tipe, dll, sementara SELECT COLUMN NAME
hanya mengembalikan nama kolom.
Saya membuat fungsi PDO yang mengembalikan semua nama kolom dalam array sederhana.
public function getColumnNames($table){
$sql = "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = :table";
try {
$core = Core::getInstance();
$stmt = $core->dbh->prepare($sql);
$stmt->bindValue(':table', $table, PDO::PARAM_STR);
$stmt->execute();
$output = array();
while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
$output[] = $row['COLUMN_NAME'];
}
return $output;
}
catch(PDOException $pe) {
trigger_error('Could not connect to MySQL database. ' . $pe->getMessage() , E_USER_ERROR);
}
}
Outputnya berupa array:
Array (
[0] => id
[1] => name
[2] => email
[3] => shoe_size
[4] => likes
... )
Maaf untuk necro tapi saya suka fungsi saya;)
PS Saya belum termasuk kelas Core tetapi Anda dapat menggunakan kelas Anda sendiri .. DS
Solusi ini dari command line mysql
mysql>USE information_schema;
Dalam kueri di bawah ini, ubah saja <--DATABASE_NAME--> ke database Anda dan <--TABLENAME--> ke nama tabel Anda di mana Anda hanya ingin nilai Field dari pernyataan DESCRIBE
mysql> SELECT COLUMN_NAME FROM COLUMNS WHERE TABLE_SCHEMA = '<--DATABASE_NAME-->' AND TABLE_NAME='<--TABLENAME-->';
Ada juga ini jika Anda lebih suka:
mysql_query('SHOW COLUMNS FROM tableName');
Bagaimana dengan ini:
SELECT @cCommand := GROUP_CONCAT( COLUMN_NAME ORDER BY column_name SEPARATOR ',\n')
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'my_database' AND TABLE_NAME = 'my_table';
SET @cCommand = CONCAT( 'SELECT ', @cCommand, ' from my_database.my_table;');
PREPARE xCommand from @cCommand;
EXECUTE xCommand;
Tabel uraian fungsi MySQL akan membawa Anda ke tempat yang Anda tuju (masukkan nama tabel Anda untuk "tabel") Anda harus mem-parsing output beberapa, tetapi cukup mudah. Seingat saya, jika Anda menjalankan kueri itu, hasil kueri PHP yang mengakses fungsi yang biasanya memberi Anda pasangan nilai-kunci akan memiliki nama kolom sebagai kuncinya. Tapi sudah lama sejak saya menggunakan PHP jadi jangan pegang saya untuk itu. :)
Anda mungkin juga ingin check out mysql_fetch_array()
, seperti pada:
$rs = mysql_query($sql);
while ($row = mysql_fetch_array($rs)) {
//$row[0] = 'First Field';
//$row['first_field'] = 'First Field';
}
Saya membutuhkan nama kolom sebagai array datar, sedangkan jawaban lainnya mengembalikan array asosiatif, jadi saya menggunakan:
$con = mysqli_connect('localhost',$db_user,$db_pw,$db_name);
$table = 'people';
/**
* Get the column names for a mysql table
**/
function get_column_names($con, $table) {
$sql = 'DESCRIBE '.$table;
$result = mysqli_query($con, $sql);
$rows = array();
while($row = mysqli_fetch_assoc($result)) {
$rows[] = $row['Field'];
}
return $rows;
}
$col_names = function get_column_names($con, $table);
$ col_names sekarang sama dengan:
(
[0] => name
[1] => parent
[2] => number
[3] => chart_id
[4] => type
[5] => id
)
The mysql_list_fields
Fungsi mungkin menarik bagi Anda; tetapi, seperti yang dinyatakan dalam manual:
Fungsi ini sudah usang. Lebih baik digunakan
mysql_query()
untuk mengeluarkanSHOW COLUMNS FROM table [LIKE 'name']
pernyataan SQL sebagai gantinya.
Anda bisa mendapatkan seluruh struktur tabel menggunakan perintah sederhana berikut.
DESC TableName
atau Anda dapat menggunakan kueri berikut.
SHOW COLUMNS FROM TableName
$col = $db->query("SHOW COLUMNS FROM category");
while ($fildss = $col->fetch_array())
{
$filds[] = '"{'.$fildss['Field'].'}"';
$values[] = '$rows->'.$fildss['Field'].'';
}
if($type == 'value')
{
return $values = implode(',', $values);
}
else {
return $filds = implode(',', $filds);
}
Saya telah menulis skrip php sederhana untuk mengambil kolom tabel melalui PHP: Show_table_columns.php
<?php
$db = 'Database'; //Database name
$host = 'Database_host'; //Hostname or Server ip
$user = 'USER'; //Database user
$pass = 'Password'; //Database user password
$con = mysql_connect($host, $user, $pass);
if ($con) {
$link = mysql_select_db($db) or die("no database") . mysql_error();
$count = 0;
if ($link) {
$sql = "
SELECT column_name
FROM information_schema.columns
WHERE table_schema = '$db'
AND table_name = 'table_name'"; // Change the table_name your own table name
$result = mysql_query($sql, $con);
if (mysql_query($sql, $con)) {
echo $sql . "<br> <br>";
while ($row = mysql_fetch_row($result)) {
echo "COLUMN " . ++$count . ": {$row[0]}<br>";
$table_name = $row[0];
}
echo "<br>Total No. of COLUMNS: " . $count;
} else {
echo "Error in query.";
}
} else {
echo "Database not found.";
}
} else {
echo "Connection Failed.";
}
?>
Nikmati!
mysqli fetch_field () bekerja untuk saya:
if ($result = $mysqli -> query($sql)) {
// Get field information for all fields
while ($fieldinfo = $result -> fetch_field()) {
printf("Name: %s\n", $fieldinfo -> name);
printf("Table: %s\n", $fieldinfo -> table);
printf("Max. Len: %d\n", $fieldinfo -> max_length);
}
$result -> free_result();
}
Sumber: https://www.w3schools.com/pHP/func_mysqli_fetch_field.asp