我在Perl中运行DBI并且无法弄清楚当我运行预准备语句时,我可以判断返回的行数是否为0.
我意识到我可以在我的while循环中设置一个计数器来获取我的行,但我希望有一个不那么难看的方法.
Har*_*lby 19
基于这里的快速浏览,似乎在你跑完之后
$statement->execute($arg)
Run Code Online (Sandbox Code Playgroud)
您可以通过访问行计数
$statement->rows
Run Code Online (Sandbox Code Playgroud)
Joh*_*usa 11
文档中的"警告"(链接到对另一个答案的评论)很重要,并提供真实,正确的答案:
通常,在非 -SELECT执行后(对于某些特定操作,如UPDATE和DELETE),或者在获取SELECT语句的所有行之后,您只能依赖行计数.
对于SELECT语句,通常不可能知道将返回多少行,除非通过全部获取它们.某些驱动程序将返回应用程序到目前为止所获取的行数,但其他驱动程序可能会返回-1,直到获取所有行为止.因此,不建议使用rows方法或带有SELECT语句的$ DBI :: rows.
为了找出结果集中有多少行,您有两个选项:
select count(*)你可以通过一个存储过程引入一些魔法,它返回一个数组或更奇特的东西,但最终需要发生这两件事之一.
所以,没有什么方便的方法来获得这个结果.你只需数数:-)