Php 如何从mysql表中获取自动递增字段名或主键字段名?

Php 如何从mysql表中获取自动递增字段名或主键字段名?,php,mysql,primary-key,auto-increment,Php,Mysql,Primary Key,Auto Increment,在PHP中,如何获取添加新rec时设置为自动递增的字段的字段名 在大多数情况下,它与表的主键相同,但不一定总是如此 所以这个问题有两个部分,第二部分又分为第三部分 1-如何获取自动递增字段名的名称 2-如何获取主键字段名的名称 2.1当一个表使用多个字段作为主键时,如何获取主键信息…您可以使用SHOW COLUMNS命令获取这些信息 示例:假设您有一个名为City的表。查看表属性的查询将是: mysql> SHOW COLUMNS FROM City; ...And the result

在PHP中,如何获取添加新rec时设置为自动递增的字段的字段名

在大多数情况下,它与表的主键相同,但不一定总是如此

所以这个问题有两个部分,第二部分又分为第三部分

1-如何获取自动递增字段名的名称

2-如何获取主键字段名的名称


2.1当一个表使用多个字段作为主键时,如何获取主键信息…

您可以使用
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       |                |
+------------+----------+------+-----+---------+----------------+

这是来自

您可以查询
信息\u架构
数据库:

SELECT column_name, column_key, extra 
FROM information_schema.columns 
WHERE table_schema=DATABASE() AND table_name='tablename';
  • 列_键
    将由键类型组成,即
    PRI
    MUL
  • extra
    列将包含自动增量列的
    auto_increment

请注意,
information\u schema
数据库是“全局”的,因此您必须始终传递相应的数据库(对于当前数据库,可以特别传递,也可以通过
database()
传递)和表,否则您将得到一个大的结果集。

如果您想获得表的主键列,可以使用以下代码:

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

您可以使用
从表中显示列
来获取表信息。大概是这样的:

$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'];
}

如果您真的包含了获取OP要求的信息的命令,我会对这个答案进行投票。当查询信息\u schema表时,使用innodb\u stats\u on\u metadata=0以获得更好的性能:用于返回自动增量列名称的语句实际上返回自动增量值,因此没有回答这个问题。显示tablename中的列,其中Extra='auto\u increment'