无法从 mysql 存储过程中看到任何值

Posted

技术标签:

【中文标题】无法从 mysql 存储过程中看到任何值【英文标题】:unable to see any value from mysql stored procedure 【发布时间】:2014-03-23 03:42:48 【问题描述】:

我正在使用以下程序: 但是当我在 localhost phpmyadmin/mysql 中键入时,我没有得到任何值:

call GetAllProducts() ;

它没有像 select 语句那样返回值? 我可以在哪里执行以查看值? 我如何使它变得正常。我非常感谢任何帮助。 提前致谢。

下面的过程已成功执行并存储。我检查了。

DELIMITER //
CREATE PROCEDURE GetAllProducts()
   BEGIN
   SELECT *  FROM products;
   END //
DELIMITER ;

【问题讨论】:

没有错误?您是否通过 PMA 连接到正确的数据库(例如,不是测试数据库)?你所拥有的应该完全有效。还请澄清一下,您可以通过 MySQL 命令行中的call GetAllProducts() 执行它吗?您使用了DELIMITER(这是一个特定于 MySQL CLI 的命令)意味着您可以访问命令行客户端 mysql... @MichaelBerkowski You are using PHP's deprecated 'mysql' extension, which is not capable of handling multi queries. The execution of some stored routines may fail! Please use the improved 'mysqli' extension to avoid any problems. --------- 当我在 mysql 的例程中单击执行时,我得到以下响应。 @jason 我想你已经回答了你自己的问题......进入 PMA config.inc.php 文件并将 $cfg['Servers'][$i]['extension'] 更改为 mysqli (并确保你'重新使用 MySQLi,或者更好的 PDO,因为它可以更好地处理我在您的应用程序中找到的过程)。 @jason 这似乎不一致。您是否已经成功创建了该过程,或者您是否正在尝试使用 PMA 创建它?如果您只是执行一个已经创建的 SP,那么就 PHP 而言,这仅算作一个查询。 @MichaelBerkowski 这只是一个查询,但会返回多条记录,而 IIRC 是旧的 mysql_ 扩展无法应对的……不过我可能错了(已经有一段时间了) .它无法真正处理比存储函数更复杂的过程。 【参考方案1】:

您多次提到使用 phpMyAdmin;你有什么版本?

我无法重现您的问题;它适用于我。在数据库中,单击 Routines 选项卡,然后为您的 GetAllProducts 例程单击 Execute 链接。

【讨论】:

我尝试了同样的方法,You are using PHP's deprecated 'mysql' extension, which is not capable of handling multi queries. The execution of some stored routines may fail! Please use the improved 'mysqli' extension to avoid any problems. --------- 当我在 mysql 的例程中单击执行时,我得到以下响应。使用最新的 phpmyadmin/MAMP 对不起,根据上面的cmets我以为你已经切换到mysqli了。我建议编辑您的 config.inc.php 并按照 CD001 的建议添加 $cfg['Servers'][$i]['extension'] = 'mysqli'; 行。 我会尝试并回复您的其他问题。谢谢 您能确认您使用的是哪个 phpMyAdmin 版本吗?它显示在右下角的主页上。我刚刚使用 mysql 扩展进行了测试,根本没有收到该消息。我的测试程序很简单SELECT * from `testtable` 并返回 4 行 12 列。 服务器版本:5.5.33

以上是关于无法从 mysql 存储过程中看到任何值的主要内容,如果未能解决你的问题,请参考以下文章

MySQL存储过程没有值检索

Mysql存储过程导出

PHP,PDO 存储过程不返回任何值或未更改值

如何从 MySQL 中的存储过程返回字符串值?

Mysql:如果记录中的字段为空,我希望存储过程返回 N/A 作为值

MySQL存储过程从列表中插入多行