মাইএসকিউএলে টেবিল কলামের নাম পান?


300

মাইএসকিএলে কোনও টেবিলের কলামের নাম ধরার উপায় আছে? পিএইচপি ব্যবহার করে

উত্তর:


536

আপনি ব্যবহার করতে পারেন তা বর্ণনা করুন :

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;

14
বর্ণনা আসলে কলাম দেখান জন্য একটি শর্টকাট (হয় dev.mysql.com/doc/refman/5.0/en/describe.html )
svens

11
আমি তথ্য_স্কেমা সংস্করণে ভোট দেব, যেহেতু এই সিনট্যাক্সটি বেশিরভাগ বড় ডেটাবেস দ্বারা সমর্থিত। আপনার যদি করতে হয় তবে কেবল 1 টি উপায় শিখতে সেরা।
কিব্বি

3
+1 আমি এমন টেবিলের নামগুলি নির্বাচন করতে চেয়েছিলাম যেখানে কলামটি উপস্থিত রয়েছেSELECT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'db_name' AND COLUMN_NAME = 'col_name';
AL̲̳I

2
বাইটগুলি সংরক্ষণ করুন desc my_table;:-) ব্যবহার করে
আলফোনসো পেরেজ

3
DESCবর্ণনার জন্য সহজেই DESCঅবতরণের জন্য বিভ্রান্ত হতে পারে । পাঠযোগ্যতার অভাবের জন্য আপনি নামমাত্র পরিমাণে বাইটগুলি সঞ্চয় করেন না।
জ্যাক ম্যাথিউ

34

নিম্নলিখিত এসকিউএল বিবৃতি প্রায় সমতুল্য:

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 COLUMNS


1
আপনি কেন "প্রায়" বলছেন?
পেসারিয়ার

2
@ পেসারিয়ার একটি জিনিসের জন্য, দ্বিতীয়টি সাবকোয়ারি হিসাবে কাজ করবে না।
ডাব্লুএফএফ

@ ওয়াএফ, আমার ধারণা তিনি পুরোপুরি অন্য কিছু বোঝাতে চেয়েছিলেন, এটি নয়।
পেসারিয়ার

2
আমার দ্রুত পরীক্ষায় SHOW COLUMNSকলামের নাম, প্রকার ইত্যাদি সম্বলিত একটি টেবিল SELECT COLUMN NAMEফেরত দেয় যখন কেবল কলামের নাম দেয়।
mwfearnley

20

আমি একটি PDO ফাংশন তৈরি করেছি যা সমস্ত কলামের নাম একটি সাধারণ অ্যারেতে ফেরত দেয়।

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
... )

নেক্রোর জন্য দুঃখিত তবে আমি আমার ফাংশনটি পছন্দ করি;)

পিএস আমি ক্লাস কোর অন্তর্ভুক্ত করেনি তবে আপনি নিজের ক্লাস ব্যবহার করতে পারেন .. ডিএস


আপার কেস ফেটিশ কি আছে?
পেসারিয়ার

স্ট্যাক ওভারফ্লোতে কোনও পুরানো প্রশ্নের উত্তর দেওয়ার ক্ষেত্রে কোনও ভুল নেই।
বিডিএসএল

1
ধন্যবাদ। আউটপুটটির জন্য আমি এইভাবে ব্যবহার করেছি: umns কলামগুলি = $ stmt-> ফেচআল (\ PDO :: FETCH_ASSOC); অ্যারে_কলাম (umns কলাম, 'COLUMN_NAME') ফেরত দিন;
এহসান

6

এই সমাধানটি কমান্ড লাইন মাইএসকিএল থেকে

mysql>USE information_schema;

নীচের ক্যোয়ারিতে কেবলমাত্র <--DATABASE_NAME--> আপনার ডাটাবেসে এবং <--TABLENAME--> আপনার টেবিলের নামটিতে পরিবর্তন করুন যেখানে আপনি কেবলমাত্র ডিজাইস্ক্রিবি স্টেটমেন্টের ক্ষেত্রের মান চান

mysql> SELECT COLUMN_NAME FROM COLUMNS WHERE TABLE_SCHEMA = '<--DATABASE_NAME-->' AND   TABLE_NAME='<--TABLENAME-->';


4

এটি সম্পর্কে:

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;

4

এটিও আকর্ষণীয় যে আপনি
EXPLAIN table_nameযেটি প্রতিশব্দ হিসাবে ব্যবহার করতে পারেনDESCRIBE table_name এবং SHOW COLUMNS FROM table_name যদিও এক্সপ্ল্লেইন প্রায়শই সাধারণভাবে ক্যোয়ারি এক্সিকিউশন প্ল্যান সম্পর্কিত তথ্য পেতে ব্যবহৃত হয়।



3

মাইএসকিউএল ফাংশন বর্ণনা করার টেবিলটি আপনি কোথায় যেতে চান তা পাওয়া উচিত (আপনার টেবিলের নাম "টেবিল" এর জন্য রেখে দিন)। আপনাকে কিছুটা আউটপুট বিশ্লেষণ করতে হবে, তবে এটি বেশ সহজ। আমি স্মরণ করি, আপনি যদি এই ক্যোয়ারীটি সম্পাদন করেন, পিএইচপি ক্যোয়ারির ফলাফল অ্যাক্সেস করা ফাংশনগুলি যা আপনাকে সাধারণত একটি কী-মান জুটি দেয় কীগুলিতে কলামের নাম থাকবে। তবে আমি পিএইচপি ব্যবহার করার পরে এটি একটি সময় হয়ে গেছে তাই আমাকে এটি ধরে রাখবেন না। :)



3

আপনি mysql_fetch_array()যেমনটি দেখতে চান তবে :

$rs = mysql_query($sql);
while ($row = mysql_fetch_array($rs)) {
//$row[0] = 'First Field';
//$row['first_field'] = 'First Field';
}

3

আমার সমতল অ্যারে হিসাবে কলামের নাম দরকার ছিল, অন্য উত্তরগুলি সহকারী অ্যারেগুলি ফিরিয়েছিল তাই আমি ব্যবহার করেছি:

$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);

$ কল_নাম এখন সমান:

(
    [0] => name
    [1] => parent
    [2] => number
    [3] => chart_id
    [4] => type
    [5] => id
)

2

mysql_list_fieldsফাংশন আপনার আগ্রহের হতে পারে; তবে, ম্যানুয়াল অনুসারে:

এই ফাংশনটি হ্রাস করা হয়। পরিবর্তে mysql_query()একটি এসকিউএল SHOW COLUMNS FROM table [LIKE 'name']বিবৃতি জারি করার জন্য ব্যবহার করা ভাল pre


সার্ভারে কোনও এসকিউএল কোয়েরি ইস্যু না করে ফাংশনটি কীভাবে কাজ করবে? কেন এটি অবমূল্যায়ন করা হচ্ছে?
পেসারিয়ার

2

নিম্নলিখিত সাধারণ কমান্ড ব্যবহার করে আপনি পুরো টেবিল কাঠামোটি পেতে পারেন।

DESC TableName

অথবা আপনি নিম্নলিখিত কোয়েরি ব্যবহার করতে পারেন।

SHOW COLUMNS FROM TableName

2

কীওয়ার্ড বা কোয়েরিগুলি অনুসরণ করে কলামের বিশদ এবং সারণির কাঠামো পেতে মাইএসকিএল-এ

1।DESC table_name

2।DESCRIBE table_name

3।SHOW COLUMNS FROM table_name

4।SHOW create table table_name;

5।EXPLAIN table_name


2
$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);
}

1
ভবিষ্যতের ব্যবহারকারীদের আরও বেশি সহায়ক হওয়ার জন্য আপনি কেবল একটি কোড ডাম্প নয়, আপনার উত্তরের জন্য কিছু প্রসঙ্গ সরবরাহ করতে পারেন।
পল জহরা

1

এটি আমার জন্য কাজ করেছে ..

$sql = "desc MyTableName";
$result = @mysql_query($sql);
while($row = @mysql_fetch_array($result)){
    echo $row[0]."<br>";
}

1

আমি পিএইচপি এর মাধ্যমে টেবিল কলামগুলি আনার জন্য একটি সাধারণ পিএইচপি স্ক্রিপ্ট লিখেছি : Show_table_colम.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.";
}
?>

উপভোগ করুন!


1
এখানে প্রকৃত উত্তর পোস্ট এবং শুধুমাত্র একটি ব্যাকআপ / রেফারেন্স হিসেবে আপনার সারকথা ব্যবহার করুন
ChrisF

0

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

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.