Php 如何从mysql表中获取自动递增字段名或主键字段名?
在PHP中,如何获取添加新rec时设置为自动递增的字段的字段名 在大多数情况下,它与表的主键相同,但不一定总是如此 所以这个问题有两个部分,第二部分又分为第三部分 1-如何获取自动递增字段名的名称 2-如何获取主键字段名的名称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
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'