2012-06-19 8 views
6

PHP में, मुझे फ़ील्ड का फ़ील्ड नाम कैसे मिलता है जिसे ऑटो वृद्धि के रूप में सेट किया गया है जब इसमें कोई नया रिक जोड़ा जाता है?मैं एक mysql तालिका से ऑटो incrementing फ़ील्ड नाम या प्राथमिक कुंजी फ़ील्डनाम कैसे प्राप्त कर सकता हूं?

ज्यादातर मामलों में, यह तालिका के PRIMARY_KEY जैसा ही है लेकिन हमेशा आवश्यक नहीं है।

तो इस प्रश्न में दूसरे भाग के साथ दूसरे भाग के साथ 2 भाग हैं।

1- कैसे ऑटो incrementing फ़ील्ड नाम के नाम पाने के लिए ...

2- कैसे primary_key क्षेत्र का नाम पाने के लिए ...

2.1 primary_key कैसे प्राप्त करें (एस) जानकारी जब एक तालिका अपनी प्राथमिक कुंजी के रूप में एक से अधिक फ़ील्ड का उपयोग करती है ...

उत्तर

2

आप कर सकते हैं SHOW COLUMNS FROM table का उपयोग कर तालिका जानकारी प्राप्त करें। कुछ इस तरह:

$res = $mysqli->query('SHOW COLUMNS FROM tablename'); 

while($row = $res->fetch_assoc()) { 
    if ($row['Extra'] == 'auto_increment') 
    echo 'Field with auto_increment = '.$row['Field']; 
    if ($row['Key'] == 'PRI') 
    echo 'Field with primary key = '.$row['Field']; 
} 
+1

टैबलेटनाम से कॉलम दिखाएं जहां अतिरिक्त = 'स्वयं वेतन वृद्धि' – ling

2

आप SHOW COLUMNS कमांड का उपयोग कर उन जानकारी प्राप्त कर सकते हैं। More info

उदाहरण: कहें कि आपके पास शहर का नाम है। क्वेरी देखने के लिए तालिका गुण होगा:

mysql> SHOW COLUMNS FROM City; 

...And the result: 
+------------+----------+------+-----+---------+----------------+ 
| Field  | Type  | Null | Key | Default | Extra   | 
+------------+----------+------+-----+---------+----------------+ 
| Id   | int(11) | NO | PRI | NULL | auto_increment | 
| Name  | char(35) | NO |  |   |    | 
| Country | char(3) | NO | UNI |   |    | 
| District | char(20) | YES | MUL |   |    | 
| Population | int(11) | NO |  | 0  |    | 
+------------+----------+------+-----+---------+----------------+ 

यह http://dev.mysql.com/doc/refman/5.0/en/show-columns.html

+0

यदि आप वास्तव में ओपी से पूछे जाने वाले सूचना को प्राप्त करने के लिए कमांड शामिल करते हैं तो मैं इस जवाब को ऊपर उठाऊंगा। – JohnFx

+0

@JohnFx उदाहरण जोड़ा गया। –

+0

upvote जोड़ा गया। =) – JohnFx

2

से है आप information_schema डेटाबेस क्वेरी कर सकते हैं:

SELECT column_name, column_key, extra 
FROM information_schema.columns 
WHERE table_schema=DATABASE() AND table_name='tablename'; 
  • column_key कुंजी प्रकार से मिलकर बनता है, यानी PRI, MUL, आदि
  • ऑटो वृद्धि कॉलम के लिएकॉलम में auto_increment होगा।

ध्यान दें कि information_schema डेटाबेस ताकि आप हमेशा संबंधित डेटाबेस (या तो विशेष रूप से या के माध्यम से DATABASE() वर्तमान डेटाबेस के लिए) से गुजरना होगा "वैश्विक" है और मेज, अन्यथा आप एक बड़े परिणाम सेट के साथ खत्म।

6

आप तालिका के प्राथमिक कुंजी स्तंभ प्राप्त करना चाहते हैं, तो आप इस कोड का उपयोग कर सकते हैं:

SELECT k.COLUMN_NAME 
FROM information_schema.table_constraints t 
LEFT JOIN information_schema.key_column_usage k 
USING(constraint_name,table_schema,table_name) 
WHERE t.constraint_type='PRIMARY KEY' 
    AND t.table_schema=DATABASE() 
    AND t.table_name='tbName'; -- the name of your table 

ऑटो की संख्या बढ़ क्षेत्र पाने के लिए, इस प्रयास करें:

SELECT Auto_increment 
FROM information_schema.tables 
WHERE table_name = 'tbName' 
    AND table_schema = DATABASE(); 
+0

info_schema तालिका से पूछताछ करते समय, बेहतर प्रदर्शन करने के लिए innodb_stats_on_metadata = 0 का उपयोग करें: https://www.percona.com/blog/2011/12/23/solving-information_schema-slowness/ – ling

संबंधित मुद्दे