【问题标题】:Store procedures in phpMyAdmin在 phpMyAdmin 中存储过程
【发布时间】:2011-12-26 05:04:41
【问题描述】:

我必须将存储过程添加到 MySQL 数据库。

问题是主机提供 phpMyAdmin 来管理数据库。

我在网上搜索,想法是运行创建程序的MySQL本机语句,但是由于程序的代码经常可能有;,所以我们必须更改MySQL中的分隔符。

phpMyAdmin 没有这个选项。有没有人尝试创建存储过程手动设置锚点,或者其他有效的方法?

【问题讨论】:

    标签: php mysql stored-procedures phpmyadmin


    【解决方案1】:

    有办法,看这个链接:http://blog.nth-design.com/2009/02/25/creating-sp-in-phpmyadmin/

    引用该链接
    1.打开phpMyadmin。
    2.选择要使用的数据库。
    3.打开 SQL 选项卡。
    4. 选择存储过程脚本中 DELIMITER 语句之间的所有 SQL 语句。 不要包含 DELIMITER 语句!这是我的示例脚本的样子:

    DROP PROCEDURE IF EXISTS spFoo $$
    CREATE PROCEDURE spFoo ()
    BEGIN
        SELECT 'Foo' FROM DUAL;
    END $$
    

    5.在分隔符字段中,SQL 编辑器文本区域下方,输入 $$ 作为您的分隔符。

    【讨论】:

    • 这正是问题所在。在主机提供的 phpMyAdmin 中,不要出现在 SQL 编辑器下方的文本区域。我无法输入 $$ 作为分隔符。
    • @user1039875 在这种情况下,您仍在使用石器时代的 phpMyAdmin 版本,请让您的系统管理员 Fred Flintstone^H^H^H 更新他们的程序。
    【解决方案2】:

    尝试使用dbForge Studio for MySQL 中的可视对象编辑器创建/编辑存储过程和其他 MySQL 对象。速成版是免费的。


    1. 连接问题 - 如果没有直接连接到 MySQL 服务器怎么办?可能的方式:HTTP 隧道 - 可用于连接 MySQL 服务器,它是一种通过 HTTP/HTTPS 协议连接到服务器的方法,或者使用安全连接(SSH/SSL 网络协议)。
    2. 建议的工具支持 DELIMITER 客户端命令。所以,这个命令可以在脚本中使用。此外,还可以在可视化编辑器中创建和修改存储过程和其他对象。

    【讨论】:

    • 鉴于您的声誉,我不想将您的回答视为垃圾邮件。您能否说明您的帖子如何帮助解决作者的问题?
    • 当然。两个答案。首先是使用可视化编辑器(正如我所说)。第二种:打开新的SQL文档,用DELIMITER编写CREATE PROCEDURE语句;此客户端支持分隔符。
    • 实际上 - 这是旧 phpMyAdmin 版本中的已知问题。我看到了两种方法——不使用分隔符,或者使用另一个 MySQL 客户端。
    • 您是说您的产品可以连接到 OP 的服务器并绕过托管服务提供商对 phpMyAdmin 的限制吗?
    • @JonathanSampson,是的,只要您可以直接(坏)或通过 ssh(好)连接到 MySQL 端口。
    【解决方案3】:

    您可以使用delimiter $$ 手动设置分隔符,其中$$ 是您选择的分隔符。这适用于我与 phpMyAdmin 的共享主机。完成后,您应该记得将其设置回;

    【讨论】:

      【解决方案4】:

      为什么每个人都尝试使用可视化工具作为控制台?!?有一个更简单的方法:

      转到您的数据库,然后查找“更多”

      然后将显示此屏幕。如果您创建了任何存储过程,它们将被列出

      要添加新的一键“添加例程”

      【讨论】:

        【解决方案5】:

        创建过程 sp_helpme 开始 从 my_table 中选择 *; 结尾 //

        Delimiters in MySQL.

        你必须改变';'到 '//' 在 phpmyadmin 中的分隔符框中。 成功执行后还原分隔符。

        【讨论】:

          【解决方案6】:

          我在使用 PHPMyadmin 中的“例程”功能时遇到了问题,因为它一直给我误报,所以我改为通过“SQL”选项卡进行操作。

          CREATE PROCEDURE GetUserPwd(email VARCHAR(320), pass VARCHAR(128))
          BEGIN
          DECLARE userid INT(3) DEFAULT 0;
          DECLARE password_equal INT(3) DEFAULT 0;
          DECLARE output VARCHAR(30);
          SELECT id INTO userid FROM members WHERE user_email = email;
          IF userid != 0 THEN
          SELECT user_pass = pass INTO password_equal FROM members WHERE id = userid;
          IF password_equal = 0 THEN
          SET output = 'not exist';
          ELSE
          SET output = 'exist';
          END IF;
          END IF;
          SELECT output;
          END
          

          在“分隔符”文本框中,输入“$$”。保存。

          之后,转到“例程”选项卡并单击“执行”并在出现提示时输入您的输入。

          【讨论】:

            猜你喜欢
            • 2016-12-02
            • 2014-09-29
            • 2013-12-15
            • 1970-01-01
            • 2020-02-26
            • 2016-05-31
            • 2018-06-22
            • 2016-05-12
            • 2013-07-03
            相关资源
            最近更新 更多