7

PHPで、新しいレコードが追加されたときに自動インクリメントするように設定されているフィールドのフィールド名を取得するにはどうすればよいですか?

ほとんどの場合、これはテーブルのPRIMARY_KEYと同じですが、必ずしもそうとは限りません。

したがって、この質問には2つの部分があり、2番目の質問は3番目の部分に分岐しています。

1-自動インクリメントフィールド名の名前を取得する方法...

2-primary_keyフィールド名の名前を取得する方法...

2.1テーブルが主キーとして複数のフィールドを使用している場合にprimary_key(s)情報を取得する方法...

4

4 に答える 4

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();  
于 2012-06-19T02:48:34.907 に答える
3

を使用してテーブル情報を取得できます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'];
}
于 2012-06-19T02:54:53.237 に答える
2

コマンドを使用して、これらの情報を取得できますSHOW COLUMNSより詳しい情報

例:Cityという名前のテーブルがあるとします。テーブル属性を確認するためのクエリは次のようになります。

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からのものです

于 2012-06-19T02:42:06.783 に答える
2

information_schemaデータベースにクエリを実行できます。

SELECT column_name, column_key, extra 
FROM information_schema.columns 
WHERE table_schema=DATABASE() AND table_name='tablename';
  • column_keyキータイプ、つまりPRIMULなどで構成されます。
  • 列には、自動増分列extraが含まれます。auto_increment

information_schemaデータベースは「グローバル」であるため、常にそれぞれのデータベース(具体的に、またはDATABASE()現在のデータベースの経由で)テーブルを渡す必要があることに注意してください。そうしないと、大きな結果セットになってしまいます。

于 2012-06-19T02:46:32.817 に答える