自動インクリメントのテーブルの列名を取得するにはどうすればよいですか?
すべてのテーブルを取得するコードがあります
そして、それぞれの自動インクリメント列を選択したいと思います。
$tables = $this->sql("SHOW TABLES");
foreach($tables as $tb)
{
//here i waant to select the auto increment of the table
}
どうやってやるの?
mysqli_fetch_fields()テーブルフィールドに関する属性の配列を提供するuse 。この配列の1つのフィールドが呼び出さ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']);
}
}
}
}
あなたが望むものの出力を与える..
詳細については、リンクをご覧ください。