首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >MySQL过程未返回第一行

MySQL过程未返回第一行
EN

Stack Overflow用户
提问于 2018-07-25 03:23:59
回答 1查看 125关注 0票数 0

execute()语句是否执行隐式fetch()?PHP不会在以下简单代码中显示返回结果的第一行:

$query = 'CALL `MySP`()';

$stmt = $db->prepare($query);
$stmt->execute();        
$rows = $stmt->fetchAll();
return $rows;

$rows只包含3行,而不是实际的4行;缺少第一行。同一SP在直接运行时返回4行。

编辑

在我尝试了评论中提出的所有建议后,我还没有找到答案。此外,我发现PDO对于非常简单的SP也可能失败。下面是一个示例:

CREATE PROCEDURE `Test`()
BEGIN
  SELECT 123 as Col1
  UNION ALL
  SELECT 456 as Col1;
END

尝试从PHP调用此proc。当你尝试抓取时,PDO抛出一个“无线索”异常:

PDO错误:“SQLSTATEHY000: General error”...

EN

回答 1

Stack Overflow用户

发布于 2018-07-25 05:40:54

终于来了!

这太愚蠢了。不知道该怪谁。它毁了我整个晚上,事实证明我只是在使用Count作为我的一个专栏的别名。不知何故,PDO不喜欢这样,因此删除了结果集的第一行。我非常确定这种意外行为会有一个合理的解释,因为MySQL不介意这个别名。

无论如何,将Count更改为RowCount或其他任何值都可以修复该行为。

希望这对以后的人有所帮助。

感谢每一个和我一起工作的人。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51506155

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档