如何使用phpmyadmin编写存储过程以及如何通过php使用存储过程?

2020/10/31 18:21 · php ·  · 0评论

我希望能够使用创建存储过程phpMyAdmin,以后再通过php使用它。

但是我不知道该怎么办?

据我所知,我发现我们无法通过来管理存储过程phpMyAdmin

还有什么其他工具可以管理存储过程?

我什至不确定通过PHP使用存储过程是否是更好的选择。有什么建议吗?

由于使用查询创建,更改和删除了存储过程,因此您实际上可以使用phpMyAdmin对其进行管理。

要创建存储过程,可以使用以下命令(必要时进行更改):

CREATE PROCEDURE sp_test()
BEGIN
  SELECT 'Number of records: ', count(*) from test;
END//

并确保将“ SQL”选项卡上的“分隔符”字段设置为//。

创建存储过程后,该过程将出现在表下方的“例程”字段集中(在“结构”选项卡中),您可以轻松地对其进行更改/删除。

要使用PHP中的存储过程,您必须执行CALL查询,就像在普通SQL中一样。

我猜没有人提到这一点,所以我将在这里写下。在phpMyAdmin 4.x中,第一行的“例程”选项卡下有“添加例程”链接。该链接打开一个弹出对话框,您可以在其中编写存储过程,而不必担心定界符或模板。

在此处输入图片说明

添加例程

在此处输入图片说明

请注意,对于简单的测试存储过程,您可能要删除已经给定的默认参数,或者可以简单地用一个值设置它。

尝试这个

delimiter ;;

drop procedure if exists test2;;

create procedure test2()

begin

selectHello World’;

end

;;

尝试使用Toad for MySQL-它免费且功能强大。

我可以在phpAdmin中使用它,但是仅当我删除了“记录数”短语时才可以。

在我的phpAdmin版本中,我可以看到用于更改定界符的框。

同样要查看数据库中的过程,我去了phpAdmin主页,然后进入了information_schema数据库,然后进入了例程表。

新版本的phpMyAdmin(3.5.1)对存储过程提供了更好的支持。包括:编辑,执行,导出,PHP代码创建和一些调试。

确保您在config.inc.php中使用mysqli扩展名

$cfg['Servers'][$i]['extension'] = 'mysqli';

打开任何数据库,您将在顶部看到一个名为Routines的新标签,然后选择Add Routine

我所做的第一个测试产生了以下错误消息:

MySQL说:#1558-mysql.proc的列数错误。预期为20,找到16。使用MySQL 50141创建,现在运行50163。请使用mysql_upgrade修复此错误。

假设您具有命令行访问权限,Ciuly的Blog提供了一个很好的解决方案。不知道如果不解决该如何解决。

  1. 定界符;;
  2. 创建过程sp_number_example_records()
  3. BEGIN

    从客户SELECT COUNT(ID);
    结束
  4. ;;

以上所有答案均做出某些假设。1and1中存在一些基本问题,某些其他托管服务提供商正在使用phpMyAdmin版本,这些版本非常古老,并且存在定义的定界符为的问题;并且没有办法从phpMyAdmin进行更改。以下是方法

  1. 在托管提供程序上创建一个新的PHPMyAdmin。附件链接为您提供了想法http://internetbandaid.com/2009/04/05/install-phpmyadmin-on-1and1/
  2. 通过复杂的途径,可以从您的dekstop访问托管服务提供商mySQL。如果您是一个认真的开发人员,这很复杂,但是最好。这是执行此操作的链接http://franklinstrube.com/blog/remote-mysql-administration-for-1and1/

希望这可以帮助

/*what is wrong with the following?*/
DELIMITER $$

CREATE PROCEDURE GetStatusDescr(
    in  pStatus char(1), 
    out pStatusDescr  char(10))
BEGIN 
    IF (pStatus == 'Y THEN
 SET pStatusDescr = 'Active';
    ELSEIF (pStatus == 'N') THEN
        SET pStatusDescr = 'In-Active';
    ELSE
        SET pStatusDescr = 'Unknown';
    END IF;

END$$

在本地服务器上,您的以下查询将起作用

DELIMITER |

CREATE PROCEDURE sample_sp_with_params (IN empId INT UNSIGNED, OUT oldName VARCHAR(20), INOUT newName VARCHAR(20))

BEGIN

SELECT `first name` into oldName FROM emp where id = empId;

UPDATE emp SET `first name`= newName where id = empId;

END

|

DELIMITER ;

但在生产服务器上可能无法正常工作。取决于您使用的mysql版本。我在powweb服务器上遇到了同样的问题,我删除了定界符并开始使用关键字,它工作正常。看看下面的查询

CREATE PROCEDURE adminsections( IN adminId INT UNSIGNED ) SELECT tbl_adminusersection.ads_name, tbl_adminusersection.ads_controller FROM tbl_adminusersectionright LEFT JOIN tbl_adminusersection ON ( tbl_adminusersectionright.adsr_ads_id = tbl_adminusersection.ads_id ) LEFT JOIN tbl_adminusers ON ( tbl_adminusersectionright.adsr_adusr_id = tbl_adminusers.admusr_id ) WHERE tbl_adminusers.admusr_id = adminId;
本文地址:http://php.askforanswer.com/ruheshiyongphpmyadminbianxiecunchuguochengyijiruhetongguophpshiyongcunchuguocheng.html
文章标签: ,   ,   ,  
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!