মাইএসকিএলে কোনও টেবিলের কলামের নাম ধরার উপায় আছে? পিএইচপি ব্যবহার করে
মাইএসকিএলে কোনও টেবিলের কলামের নাম ধরার উপায় আছে? পিএইচপি ব্যবহার করে
উত্তর:
আপনি ব্যবহার করতে পারেন তা বর্ণনা করুন :
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
অবতরণের জন্য বিভ্রান্ত হতে পারে । পাঠযোগ্যতার অভাবের জন্য আপনি নামমাত্র পরিমাণে বাইটগুলি সঞ্চয় করেন না।
নিম্নলিখিত এসকিউএল বিবৃতি প্রায় সমতুল্য:
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
SHOW COLUMNS
কলামের নাম, প্রকার ইত্যাদি সম্বলিত একটি টেবিল SELECT COLUMN NAME
ফেরত দেয় যখন কেবল কলামের নাম দেয়।
আমি একটি 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
... )
নেক্রোর জন্য দুঃখিত তবে আমি আমার ফাংশনটি পছন্দ করি;)
পিএস আমি ক্লাস কোর অন্তর্ভুক্ত করেনি তবে আপনি নিজের ক্লাস ব্যবহার করতে পারেন .. ডিএস
এই সমাধানটি কমান্ড লাইন মাইএসকিএল থেকে
mysql>USE information_schema;
নীচের ক্যোয়ারিতে কেবলমাত্র <--DATABASE_NAME--> আপনার ডাটাবেসে এবং <--TABLENAME--> আপনার টেবিলের নামটিতে পরিবর্তন করুন যেখানে আপনি কেবলমাত্র ডিজাইস্ক্রিবি স্টেটমেন্টের ক্ষেত্রের মান চান
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;
এটিও আকর্ষণীয় যে আপনি
EXPLAIN table_name
যেটি প্রতিশব্দ হিসাবে ব্যবহার করতে পারেনDESCRIBE table_name
এবং SHOW COLUMNS FROM table_name
যদিও এক্সপ্ল্লেইন প্রায়শই সাধারণভাবে ক্যোয়ারি এক্সিকিউশন প্ল্যান সম্পর্কিত তথ্য পেতে ব্যবহৃত হয়।
এটি দেখুন:
mysql_query('DESCRIBE '.$table);
মাইএসকিউএল ফাংশন বর্ণনা করার টেবিলটি আপনি কোথায় যেতে চান তা পাওয়া উচিত (আপনার টেবিলের নাম "টেবিল" এর জন্য রেখে দিন)। আপনাকে কিছুটা আউটপুট বিশ্লেষণ করতে হবে, তবে এটি বেশ সহজ। আমি স্মরণ করি, আপনি যদি এই ক্যোয়ারীটি সম্পাদন করেন, পিএইচপি ক্যোয়ারির ফলাফল অ্যাক্সেস করা ফাংশনগুলি যা আপনাকে সাধারণত একটি কী-মান জুটি দেয় কীগুলিতে কলামের নাম থাকবে। তবে আমি পিএইচপি ব্যবহার করার পরে এটি একটি সময় হয়ে গেছে তাই আমাকে এটি ধরে রাখবেন না। :)
আমার সমতল অ্যারে হিসাবে কলামের নাম দরকার ছিল, অন্য উত্তরগুলি সহকারী অ্যারেগুলি ফিরিয়েছিল তাই আমি ব্যবহার করেছি:
$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
)
mysql_list_fields
ফাংশন আপনার আগ্রহের হতে পারে; তবে, ম্যানুয়াল অনুসারে:
এই ফাংশনটি হ্রাস করা হয়। পরিবর্তে
mysql_query()
একটি এসকিউএলSHOW COLUMNS FROM table [LIKE 'name']
বিবৃতি জারি করার জন্য ব্যবহার করা ভাল pre
নিম্নলিখিত সাধারণ কমান্ড ব্যবহার করে আপনি পুরো টেবিল কাঠামোটি পেতে পারেন।
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);
}
এটি আমার জন্য কাজ করেছে ..
$sql = "desc MyTableName";
$result = @mysql_query($sql);
while($row = @mysql_fetch_array($result)){
echo $row[0]."<br>";
}
আমি পিএইচপি এর মাধ্যমে টেবিল কলামগুলি আনার জন্য একটি সাধারণ পিএইচপি স্ক্রিপ্ট লিখেছি : 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.";
}
?>
উপভোগ করুন!
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