-1

如何获取自动递增的表的列名?

我有一个代码可以拿到我所有的桌子

我想选择他们的每个自动增量列。

   $tables = $this->sql("SHOW TABLES");

   foreach($tables as $tb)
   {

       //here i waant to select the  auto increment of the table
   }

我怎样才能做到这一点?

4

4 回答 4

1

使用mysqli_fetch_fields()它给出了关于表字段的属性数组。调用此数组中的一个字段,FLAGS它表示已为该字段设置的各种标志,例如 PRIMARY_KEY、UNIQUE_KEY、AUTO_INCREMENT_FLAG 等。

于 2012-08-31T03:48:03.650 回答
1

试试这样的,

SELECT * 
FROM   COLUMNS 
WHERE  TABLE_SCHEMA = 'yourschema'  AND 
       EXTRA = 'auto_increment'
于 2012-08-31T03:45:39.987 回答
0

要获取表中的列名列表,请运行以下 Mysql 查询:SHOW COLUMNS $tablename. 一定要自己尝试这个无害且内容丰富的声明,看看它会返回什么。有关此查询实际执行的更多信息,请参阅:http ://dev.mysql.com/doc/refman/5.0/en/show-columns.htm

如果是主键,返回的查询结果中的“Key”列将包含“PRI”值。

确保$tablename是一个真实的表 -绝对不要接受用户输入这个值,因为这将是一个严重的安全风险。

于 2012-08-31T03:51:06.017 回答
0

你可以使用这样的东西

$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']);
     }
   }
  }
}

哪个给出你想要的输出..

有关更多信息,请查看链接

于 2012-08-31T03:46:56.573 回答