【发布时间】:2014-09-29 14:53:14
【问题描述】:
PHP mysqli_data_seek 将结果指针调整到结果中的任意行。
使用DBI 和DBD::mysql 是否有与PHP mysqli_data_seek 函数等效的Perl?
【问题讨论】:
-
为什么不直接使用
LIMIT? -
那每次都需要一个新的查询。我只想运行一次查询。我在 PHP 脚本中使用
mysqli_data_seek函数并发现它很有价值。我现在需要 Perl 中的等效函数。我可以重新运行查询,但这似乎是一种浪费。 -
是的,但是每个查询获取的数据要少得多。这是用于寻呼还是类似的东西?
-
我不使用 PHP,但根据我对 docs 的阅读,
mysqli_data_seek只能使用 buffered queries,它将所有结果读入内存。您可以使用fetchall_或selectall_方法之一使用DBI模拟此操作,并使用数组索引或哈希键来获取您感兴趣的行。将所有内容读入内存将无法获得非常大的结果集(使用 PHP 或 Perl),因此如果您的查询返回大量数据,您应该使用LIMIT。 -
该文档适用于完全不同的过时模块
Mysql.pm(及其伙伴Msql.pm)。在 v4.x 之前,它包含在DBD::mysql发行版 中。据我所知,DBD::mysql从未记录过dataseek函数,尽管 ikegami 在 XS 源代码中找到了它。重申一下,通过将查询的所有结果存储在一个数组中并对其进行索引,您将获得完全相同的功能。