क्या mysql में किसी तालिका के कॉलम नाम को हथियाने का कोई तरीका है? php का उपयोग करना
क्या mysql में किसी तालिका के कॉलम नाम को हथियाने का कोई तरीका है? php का उपयोग करना
जवाबों:
आप DESCRIBE का उपयोग कर सकते हैं :
DESCRIBE my_table;
या नए संस्करणों में आप INFORMATION_SCHEMA का उपयोग कर सकते हैं :
SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'my_database' AND TABLE_NAME = 'my_table';
या आप कम रंगों का उपयोग कर सकते हैं :
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
वर्णन के DESC
लिए उतरने के लिए आसानी से भ्रमित किया जा सकता है । पठनीयता की कमी के लिए आपके द्वारा सहेजे जाने वाले बाइट्स की नाममात्र राशि इसके लायक नहीं है।
निम्नलिखित SQL कथन लगभग बराबर हैं:
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']
संदर्भ: INFORMATION_SCHEMA रंग
SHOW COLUMNS
स्तंभ नाम, प्रकार, आदि सहित एक तालिका देता है, जबकि SELECT COLUMN NAME
सिर्फ स्तंभ नाम देता है।
मैंने एक पीडीओ फ़ंक्शन बनाया जो सभी कॉलम नामों को एक साधारण एरे में देता है।
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);
}
}
आउटपुट एक सरणी होगा:
Array (
[0] => id
[1] => name
[2] => email
[3] => shoe_size
[4] => likes
... )
Necro के लिए क्षमा करें, लेकिन मुझे अपना कार्य पसंद है;)
PS मैंने क्लास कोर को शामिल नहीं किया है लेकिन आप अपनी खुद की क्लास .. डीएस का उपयोग कर सकते हैं
यह समाधान कमांड लाइन mysql से है
mysql>USE information_schema;
नीचे दिए गए क्वेरी में सिर्फ <डेटाबेस - DATABASE_NAME -> को अपने डेटाबेस में और <- TABLENAME -> को अपने टेबल के नाम पर बदलें जहां आप बस DESCRIBE स्टेटमेंट के फील्ड मान चाहते हैं।
mysql> SELECT COLUMN_NAME FROM COLUMNS WHERE TABLE_SCHEMA = '<--DATABASE_NAME-->' AND TABLE_NAME='<--TABLENAME-->';
यदि आप चाहें तो यह भी है:
mysql_query('SHOW COLUMNS FROM tableName');
इस बारे में कैसा है:
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;
इस पर गौर करें:
mysql_query('DESCRIBE '.$table);
MySQL फ़ंक्शन वर्णन तालिका आपको वहां मिलनी चाहिए जहां आप जाना चाहते हैं ("तालिका" के लिए अपनी तालिका का नाम रखें)। आपको आउटपुट को पार्स करना होगा, लेकिन यह बहुत आसान है। जैसा कि मुझे याद है, यदि आप उस क्वेरी को निष्पादित करते हैं, तो PHP क्वेरी परिणाम तक पहुँचने वाले कार्यों को सामान्य रूप से आपको एक कुंजी-मूल्य जोड़ी देती है, जिसमें कुंजी के रूप में कॉलम नाम होंगे। लेकिन यह एक समय हो गया है क्योंकि मैंने PHP का उपयोग किया है इसलिए मुझे उस पर पकड़ न दें। :)
मुझे एक फ्लैट ऐरे के रूप में कॉलम नामों की आवश्यकता थी, जबकि अन्य उत्तर सहयोगी सरणियों को लौटाते थे, इसलिए मैंने उपयोग किया:
$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 अब बराबर है:
(
[0] => name
[1] => parent
[2] => number
[3] => chart_id
[4] => type
[5] => id
)
mysql_list_fields
समारोह आपकी रुचि की हों; लेकिन, जैसा कि मैनुअल कहता है:
इस फ़ंक्शन को पदावनत किया जाता है। इसके बजाय
mysql_query()
SQLSHOW COLUMNS FROM table [LIKE 'name']
कथन जारी करने के लिए उपयोग करना बेहतर होता है ।
आप साधारण आदेश का पालन करके पूरी तालिका संरचना प्राप्त कर सकते हैं।
DESC TableName
या आप निम्नलिखित क्वेरी का उपयोग कर सकते हैं।
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);
}
मैंने PHP के माध्यम से टेबल कॉलम लाने के लिए एक साधारण 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.";
}
?>
का आनंद लें!
mysqli fetch_field () मेरे लिए काम किया:
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();
}
स्रोत: https://www.w3schools.com/pHP/func_mysqli_fetch_field.asp