IT Share you

phpmyadmin을 사용하여 저장 프로 시저를 작성하는 방법과 PHP를 통해 사용하는 방법은 무엇입니까?

shareyou 2020. 12. 2. 22:11
반응형

phpmyadmin을 사용하여 저장 프로 시저를 작성하는 방법과 PHP를 통해 사용하는 방법은 무엇입니까?


저장 프로 시저를 사용 phpMyAdmin하고 나중에 PHP를 통해 사용할 수 있기를 원합니다 .

그러나 나는 방법을 모른다?

내가 아는 바에 따르면 phpMyAdmin.

저장 프로 시저를 관리 할 수있는 다른 도구는 무엇입니까?

PHP를 통해 저장 프로 시저를 사용하는 것이 더 나은 옵션인지 확실하지 않습니다. 어떠한 제안?


저장 프로시 저는 쿼리를 사용하여 생성, 변경 및 삭제되므로 실제로 phpMyAdmin을 사용하여 관리 할 수 ​​있습니다.

저장 프로 시저를 만들려면 다음을 사용할 수 있습니다 (필요에 따라 변경).

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

그리고 SQL 탭의 "구분자"필드를 //로 설정했는지 확인합니다.

저장 프로 시저를 생성하면 테이블 아래의 루틴 필드 셋 (구조 탭)에 나타나며 쉽게 변경 / 삭제할 수 있습니다.

PHP에서 저장 프로 시저를 사용하려면 일반 SQL 에서처럼 CALL 쿼리를 실행해야합니다.


아무도 이것을 언급하지 않았으므로 여기에 쓸 것입니다. phpMyAdmin 4.x에서는 맨 위 행의 "Routines"탭 아래에 "Add Routine"링크가 있습니다. 이 링크는 구분 기호 나 템플릿에 대한 걱정없이 저장 프로 시저를 작성할 수있는 팝업 대화 상자를 엽니 다.

여기에 이미지 설명 입력

루틴 추가

여기에 이미지 설명 입력

간단한 테스트 저장 프로 시저의 경우 이미 제공된 기본 매개 변수를 삭제하거나 값으로 간단히 설정할 수 있습니다.


이 시도

delimiter ;;

drop procedure if exists test2;;

create procedure test2()

begin

select ‘Hello World’;

end

;;

Toad for MySQL을 사용해보십시오. 무료이며 훌륭합니다.


phpAdmin에서 작동하도록했지만 "Number of records"구문을 제거했을 때만 가능합니다.

내 버전의 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의 블로그 는 명령 줄 액세스 권한이 있다고 가정 할 때 좋은 솔루션을 제공합니다. 그렇지 않으면 어떻게 고칠 지 모르겠습니다.


  1. 구분자 ;;
  2. 생성 절차 sp_number_example_records ()
  3. BEGIN
    SELECT count (id) from customer; 종료
  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/ 링크가 있습니다.

도움이 되었기를 바랍니다


로컬 서버에서 다음 쿼리가 작동합니다.

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;

도움이되기를 바랍니다.

감사


/*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$$

참고 URL : https://stackoverflow.com/questions/2846516/how-to-write-a-stored-procedure-using-phpmyadmin-and-how-to-use-it-through-php

반응형