例えば :
tbl_ifo
id | name | age | gender
----------------------------
1 | John | 15 | Male
2 | Maria | 18 | Female
3 | Steph | 19 | Female
4 | Jay | 21 | Male
mysql を使用してこのテーブルの列をカウントするにはどうすればよいですか?
SELECT count(*)
FROM information_schema.columns
WHERE table_name = 'tbl_ifo'
データベースの名前も指定する必要があると思います:
SELECT COUNT(*)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_schema = 'SchemaNameHere'
AND table_name = 'TableNameHere'
データベースの名前を指定しない場合、テーブルの名前と一致する限り、すべての列がカウントされる可能性があります。たとえば、次の 2 つのDBaseA and DbaseB
データベースがあるDBaseA
とします。では、 TabA( 4 fields )、TabC(4 fields)という 2 つのテーブルがあります。DBaseB
このクエリを実行すると:
SELECT count(*)
FROM information_schema.columns
WHERE table_name = 'TabA'
という名前のテーブルが 2 つあるため、7 が返されTabA
ます。しかし、別の条件を追加することによってtable_schema = 'SchemaNameHere'
:
SELECT COUNT(*)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_schema = 'DBaseA'
AND table_name = 'TabA'
その場合、3 のみが返されます。
$cs = mysql_query("describe tbl_info");
$column_count = mysql_num_rows($cs);
Or just:
$column_count = mysql_num_rows(mysql_query("describe tbl_info"));
information_schema.columns
テーブルの列を正確に数えるには、目的のデータベース (スキーマ) 名とテーブル名を渡すことでフォームを取得できます。
次のコードを参照してください。
SELECT count(*)
FROM information_schema.columns
WHERE table_schema = 'myDB'
AND table_name = 'table1';
より一般的な答えがあります。しかし、DB 内のすべてのテーブルの列を数えるのに役立つと思います:
SELECT table_name, count(*)
FROM information_schema.columns
GROUP BY table_name;
単純に mysql_fetch_assoc を使用し、count() 関数を使用して配列をカウントします。