-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()テーブルフィールドに関する属性の配列を提供するuse 。この配列の1つのフィールドが呼び出さ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 に答える