如何获取自动递增的表的列名?
我有一个代码可以拿到我所有的桌子
我想选择他们的每个自动增量列。
$tables = $this->sql("SHOW TABLES");
foreach($tables as $tb)
{
//here i waant to select the auto increment of the table
}
我怎样才能做到这一点?
使用mysqli_fetch_fields()
它给出了关于表字段的属性数组。调用此数组中的一个字段,FLAGS
它表示已为该字段设置的各种标志,例如 PRIMARY_KEY、UNIQUE_KEY、AUTO_INCREMENT_FLAG 等。
试试这样的,
SELECT *
FROM COLUMNS
WHERE TABLE_SCHEMA = 'yourschema' AND
EXTRA = 'auto_increment'
要获取表中的列名列表,请运行以下 Mysql 查询:SHOW COLUMNS $tablename
. 一定要自己尝试这个无害且内容丰富的声明,看看它会返回什么。有关此查询实际执行的更多信息,请参阅:http ://dev.mysql.com/doc/refman/5.0/en/show-columns.htm
如果是主键,返回的查询结果中的“Key”列将包含“PRI”值。
确保$tablename
是一个真实的表 -绝对不要接受用户输入这个值,因为这将是一个严重的安全风险。
你可以使用这样的东西
$tables = $this->sql("SHOW TABLES");
foreach($tables as $tb)
{
$result = mysqli_query("SHOW COLUMNS FROM ".$tb);
if (!$result) {
echo 'Could not run query: ' . mysql_error();
exit;
}
if (mysqli_num_rows($result) > 0) {
$autoincrement_field = array();
while ($row = mysql_fetch_assoc($result)) {
if($row['Extra'] === "auto_increment"){
$autoincrement_field[] = aray($tb => $row['field']);
}
}
}
}
哪个给出你想要的输出..
有关更多信息,请查看链接