无法从 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 存储过程中看到任何值的主要内容,如果未能解决你的问题,请参考以下文章