Существует ли способ получить название поля первичного ключа от mysql-базы-данных? Например:
У меня есть таблица как это:
+----+------+
| id | name |
+----+------+
| 1 | Foo1 |
| 2 | Foo2 |
| 3 | Foo3 |
+----+------+
Где полевой идентификатор является первичным ключом (он имеет автоматический инкремент, но я не могу использовать это). Как я могу получить полевой "идентификатор" имени в php?
Лучше использовать SHOW KEYS
, поскольку у вас не всегда есть доступ к information_schema. Следующие работы:
SHOW KEYS FROM table WHERE Key_name = 'PRIMARY'
Column_name будет содержать имя первичного ключа.
Вот имя столбца первичного ключа
SELECT k.column_name
FROM information_schema.table_constraints t
JOIN information_schema.key_column_usage k
USING(constraint_name,table_schema,table_name)
WHERE t.constraint_type='PRIMARY KEY'
AND t.table_schema='YourDatabase'
AND t.table_name='YourTable';
SELECT key_column_usage.column_name
FROM information_schema.key_column_usage
WHERE table_schema = schema() -- only look in the current db
AND constraint_name = 'PRIMARY' -- always 'PRIMARY' for PRIMARY KEY constraints
AND table_name = '<your-table-name>' -- specify your table.
Для подхода PHP вы можете использовать mysql_field_flags
$q = mysql_query('select * from table limit 1');
for($i = 0; $i < mysql_num_fields(); $i++)
if(strpos(mysql_field_tags($q, $i), 'primary_key') !== false)
echo mysql_field_name($q, $i)." is a primary key\n";