How can i get foreign key field like in phpMyAdmin using php and mysqli?
see photo:
All the constraints are listed in INFORMATION_SCHEMA.TABLE_CONSTRAINTS:
mysql> create table test.foo (id int primary key);
mysql> create table test.bar (fooid int, foreign key (fooid) references foo(id));
mysql> select * from information_schema.table_constraints
where constraint_schema = 'test'\G
*************************** 1. row ***************************
CONSTRAINT_CATALOG: def
CONSTRAINT_SCHEMA: test
CONSTRAINT_NAME: bar_ibfk_1
TABLE_SCHEMA: test
TABLE_NAME: bar
CONSTRAINT_TYPE: FOREIGN KEY
*************************** 2. row ***************************
CONSTRAINT_CATALOG: def
CONSTRAINT_SCHEMA: test
CONSTRAINT_NAME: PRIMARY
TABLE_SCHEMA: test
TABLE_NAME: foo
CONSTRAINT_TYPE: PRIMARY KEY
And all the columns in those constraints are in INFORMATION_SCHEMA.KEY_COLUMN_USAGE:
mysql> select * from information_schema.key_column_usage
where constraint_schema = 'test'\G
*************************** 1. row ***************************
CONSTRAINT_CATALOG: def
CONSTRAINT_SCHEMA: test
CONSTRAINT_NAME: bar_ibfk_1
TABLE_CATALOG: def
TABLE_SCHEMA: test
TABLE_NAME: bar
COLUMN_NAME: fooid
ORDINAL_POSITION: 1
POSITION_IN_UNIQUE_CONSTRAINT: 1
REFERENCED_TABLE_SCHEMA: test
REFERENCED_TABLE_NAME: foo
REFERENCED_COLUMN_NAME: id
*************************** 2. row ***************************
CONSTRAINT_CATALOG: def
CONSTRAINT_SCHEMA: test
CONSTRAINT_NAME: PRIMARY
TABLE_CATALOG: def
TABLE_SCHEMA: test
TABLE_NAME: foo
COLUMN_NAME: id
ORDINAL_POSITION: 1
POSITION_IN_UNIQUE_CONSTRAINT: NULL
REFERENCED_TABLE_SCHEMA: NULL
REFERENCED_TABLE_NAME: NULL
REFERENCED_COLUMN_NAME: NULL