В PHP, как мне получить имя поля поля, которое было установлено как автоматическое приращение, когда к нему добавляется новый rec?
В большинстве случаев это то же самое, что и PRIMARY_KEY таблицы, но необязательно всегда.
Таким образом, этот вопрос состоит из двух частей, второй – в 3-ю часть.
1- Как получить имя имени автоинкрементного поля …
2- Как получить имя имени поля primary_key …
2.1 Как получить информацию primary_key (s), когда таблица использует больше одного поля в качестве своего первичного ключа …
Вы можете получить информацию о таблице, используя таблицу 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']; }
если вы хотите получить столбец первичного ключа в таблице, вы можете использовать этот код:
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();
Вы можете запросить базу данных information_schema
:
SELECT column_name, column_key, extra FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='tablename';
column_key
будет состоять из типа ключа, то есть PRI
, MUL
и т. Д. extra
столбец будет содержать auto_increment
для столбца автоматического увеличения. Обратите внимание, что база данных information_schema
является «глобальной», поэтому вы всегда должны передавать соответствующую базу данных (либо конкретно, либо через DATABASE()
для текущей базы данных), либо в таблицу, иначе вы получите набор результатов BIG.
Вы можете получить эту информацию, используя команду 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