phpMyAdmin,存储过程不按预期工作

Posted

技术标签:

【中文标题】phpMyAdmin,存储过程不按预期工作【英文标题】:phpMyAdmin, store procedure don't work as expected 【发布时间】:2013-01-05 09:35:02 【问题描述】:

我写了一个简单的(测试)程序,它只返回 1 行,这是为什么呢?

SELECT *
FROM service

过程执行得很好,只是显示的结果只包含第一行而不是所有表记录。

【问题讨论】:

因为表service只有1行。 你能告诉我们更多的代码吗?@user1973900 不,该表包含 9 行。当我从 SQL 选项卡执行时,它返回正常 显示第 0 - 8 行(共 9 行,查询耗时 0.0006 秒) SELECT * FROM service LIMIT 0 , 30 @Shahriar 没有其他代码,我只是测试存储过程 【参考方案1】:

好吧,我只是偶然解决了它 :) 希望有一天有人会需要:

创建程序后,phpMyAdmin 中“例程”选项卡中的“执行”图标不起作用,仅返回表中的 1 条记录。我下载了最新的3.5.5版本,问题还是一样。

其实程序本身运行的很好,只需使用SQL选项卡并手写调用即可:

call myProcedure

这就是所有人:)

【讨论】:

这是正确答案。从 SQL 窗口调用该过程,它会正常工作 我遇到了同样的问题,当我说“调用 myprocedure”时,它工作正常,就像你的一样。这有点烦人,因为单击执行按钮更容易,但至少有一个解决方法,直到 phpmyadmin 在 YUM 包中更新。感谢这个话题/答案。 +1【参考方案2】:

如果你每次都得到最后一行。那么可能是你的代码是这样的,

$result = mysql_query("SELECT * FROM service");
while($row = mysql_fetch_array($result))

  $user=$row['Username'];  //assume you have a column named Username


echo $user . "<br>";

但是应该像下面这样,那么你就可以得到所有的数据了。

$result = mysql_query("SELECT * FROM service");
while($row = mysql_fetch_array($result))

  $user=$row['Username'];  //assume you have a column named Username
  echo $user . "<br>";

【讨论】:

感谢提示,但我没有使用任何代码,来自 php 或类似的东西。我只是从 phpMyAdmin 测试 嗯,问题出在 PhpMyAdmin 软件上,我使用的是 Wamp 服务器的 3.5.1。存储过程只返回一行而不是所有表内容。我刚刚存储了一个复杂的 SELECT,其中包含几个 LEFT JOIN,它在 .NET VB 内部执行起来就像一个魅力。感谢@Shahriar 的努力,我会给你投票:) 我放弃了 PhpMyAdmin。大家干杯,【参考方案3】:

确保您的测试过程符合commit

根据如何您运行 MySQL 语句,您可能有也可能没有隐式 commit。 Phpmyadmin 执行此隐式commit。但是,如果您的测试过程是通过其他方式运行的,例如 PHP 之类的编程语言,则您可能没有设置 autocommit。然后,您的测试程序必须自己发出 commit 语句才能使测试的效果出现在世界其他地方......以及 Phpmyadmin。

【讨论】:

请解释一下,我只是保存我在SQL选项卡中写的程序,我应该做其他事情吗? @user1973900 已编辑以提供更多详细信息。 @kmkaplan 非常感谢您的解释,并原谅我错过的理解。我刚刚检查并自动提交已打开,所以我只是不明白。正如我上面所说,该过程在 .NET 中完美执行,所以我猜 phpMyAdmin 有问题 :) 没关系,我很高兴使用我的开发工具工作,phpMyAdmin 只是为了快速测试,也许我可以没有这个功能

以上是关于phpMyAdmin,存储过程不按预期工作的主要内容,如果未能解决你的问题,请参考以下文章

如何在 cpanel 的 phpmyadmin 中编辑或导出存储过程? [关闭]

phpmyadmin 中的存储过程

PhpMyAdmin 中的简单存储过程

如何在 phpMyAdmin 中查看我的存储过程?

存储过程函数不能正常工作?

在 MySql/phpmyadmin 中创建存储过程