【发布时间】:2015-04-28 20:02:57
【问题描述】:
鉴于这个 perl DBI 查询:
$qh = $db_connection->prepare ('SELECT addresses.* from addresses WHERE 1');
地址表结构将来可能会发生变化,即可能会插入一些新列。所以不能保证特定列可以分配到哪个索引号。
当我执行$qh->fetchrow_array 时,我希望能够确定特定列的索引号是多少,以便检查它是否为空。例如,我想查看mail_addr 列是否为空,如下所示:
if (!$$row[$index_number]) {
do_something();
}
如何确定$index_number 的值应该是多少?
【问题讨论】:
-
这就是为什么你不应该使用
SELECT *。指定要在 SQL 语句中返回的列。正如您已经发现的那样,否则这样做可能会破坏您的代码。 -
不能在您的评论中发送垃圾邮件! ->@ThisSuitIsBlackNot
-
如果
mail_addr列不再存在,您想做什么? -
您可以为此使用NAME_lc_hash 属性。但是 fetchrow_hashref (建议在下面的答案中)或bind_columns 几乎总是一个更好的选择。请参阅绑定到哈希字段的 bind_columns 示例。