0

我正在阅读我们公司的代码库,我看到了一些似乎可以做得更好的东西。

$dbRow = $dbh->Execute("SELECT * FROM database.table LIMIT 1");
$tableColumnCount = $dbRow->_numOfFields;

这是使用 ADODB 获取列数的唯一方法吗?必须执行查询以便您可以提出问题似乎很愚蠢。

4

3 回答 3

2

您可以使用INFORMATION_SCHEMA.COLUMNS表:

SELECT COUNT(*) 
  FROM INFORMATION_SCHEMA.COLUMNS
 WHERE table_name = 'your_table_name'
   AND table_schema = 'your_database_name'

也就是说,您可能希望FLUSH TABLES在 INFORMATION_SCHEMA.COLUMNS 之前运行命令以反映现有的表和列,因为数据已缓存

于 2010-07-14T21:59:48.797 回答
1

MetaColumns 或 MetaColumnNames应该给你这个信息

于 2010-07-14T22:36:41.650 回答
1

无论哪种方式,您最终都必须访问数据库,除非您的程序可以神奇地知道表的模式。如果 LIMIT 0 在 MySQL 中是合法的,那么这会稍微高效一些——正如我所期望的那样,将 LIMIT 1 替换为 WHERE 1 = 0。

于 2010-07-14T21:49:05.327 回答