>  기사  >  백엔드 개발  >  mysql 저장 프로시저_php 기술을 호출하는 PHP 분석 예

mysql 저장 프로시저_php 기술을 호출하는 PHP 분석 예

WBOY
WBOY원래의
2016-05-16 20:26:56940검색

이 기사에서는 PHP에서 mysql 저장 프로시저를 호출하는 방법을 분석합니다. 참고할 수 있도록 모든 사람과 공유하세요. 구체적인 분석은 다음과 같습니다.

Mysql 저장 프로시저 생성 구문은 다음과 같습니다.

프로시저 생성 및 함수 생성:

코드 복사 코드는 다음과 같습니다.
CREATE PROCEDURE sp_name ([proc_parameter[,...]])

[특징...] routine_body

함수 만들기 sp_name ([func_parameter[,...]])

반품 유형

[특징...] routine_body

proc_매개변수:

[ IN | OUT | INOUT ] param_name 유형

func_parameter:

param_name 유형

유형:

유효한 모든 MySQL 데이터 유형

특징:

언어 SQL

| [아님] 결정적

| { SQL 포함 | SQL 데이터 읽기 없음 SQL 데이터 수정 } |
| SQL 보안 { 정의자 }

| COMMENT '문자열'

routine_body:

유효한 SQL 프로시저 명령문 또는 명령문
다 읽고 나면 먼저 몇 가지 간단한 저장 프로시저 작성을 시작할 수 있습니다. 프로시저 생성(하위 프로그램), 함수 생성(함수) 코드는 다음과 같습니다.

코드 복사 코드는 다음과 같습니다.
프로시저 생성 sp_Name([proc_parameter])
루틴_바디
여기서 매개변수 유형은 IN OUT INOUTT일 수 있으며 이는 단어의 의미와 같습니다. IN은 전달된 매개변수, OUT은 전달된 매개변수, INOUT은 전달되었지만 결국 반환된 매개변수를 의미합니다. 코드는 다음과 같습니다.


코드 복사 코드는 다음과 같습니다.
함수 생성p_Name([func_parameter])
반품 유형
루틴_바디
반환 유형은 반환 유형을 지정합니다. 여기에 제공된 유형은 반환 값의 유형과 동일해야 합니다. 그렇지 않으면 오류가 보고됩니다. 다음은 간단한 예입니다.


코드 복사 코드는 다음과 같습니다.
mysql> mysql> 프로시저 g 생성
-> 시작
-> 버전 선택()
-> 끝
-> //
쿼리 확인, 영향을 받은 행 0개

mysql> getversion(@a
호출 -> //
쿼리 확인, 영향을 받은 행 0개

mysql> @a를 선택하세요. -> //
-------------
@a                                  -------------
5.0.45-커뮤니티-nt
-------------
1줄 세트(0.05초)

현재 mysql 버전을 얻기 위한 저장 프로시저. 그러면 php는 mysql 저장 프로시저와 어떻게 결합됩니까? 다음은 Baidu에서 가져온 것입니다.



코드 복사
코드는 다음과 같습니다.사용자가 존재하는 경우 테이블 삭제 ​​테이블 사용자 생성(​​ ID int unsigned null이 아님 auto_increment,
이름 varchar(20)은 null이 아닙니다.
비밀번호 문자(32)는 null이 아닙니다.
           기본 키(Id)                                                          );

사용자의 저장 프로시저를 추가하면 코드는 다음과 같습니다.



코드 복사
코드는 다음과 같습니다.
구분자 //
insertuser 프로시저 생성(사용자 이름 varchar(20), userpwd varchar(32))
시작
welefen.user(Name,Pwd) 값에 삽입 ​​(username,md5(userpwd))
종료
//

사용자의 저장 프로시저를 확인합니다. 코드는 다음과 같습니다.
코드 복사 코드는 다음과 같습니다.
구분자 //
프로시저 검증 사용자 생성(사용자 이름 varchar(20), 출력 매개변수1)
시작
          이름=사용자 이름인 welefen.user에서 param1에 Pwd를 선택합니다. 종료
//
비밀번호 변경을 위한 저장 프로시저는 다음과 같습니다.

코드 복사 코드는 다음과 같습니다.
구분자 //
프로시저 수정Pwd(사용자 이름 varchar(20), userpwd varchar(32))
생성 시작
         welefen.user set Pwd=md5(userpwd) 업데이트, 여기서 이름=사용자 이름; 종료
//

사용자의 저장 프로시저를 삭제합니다. 코드는 다음과 같습니다.


코드 복사 코드는 다음과 같습니다.구분자 //
deleteuser 프로시저 생성(사용자 이름 varchar(20))
시작
~                                                                          welefen.user에서 삭제합니다. 여기서 이름은 사용자 이름입니다. 종료
//

클라이언트 측에서는 다음 프로그램을 제공하며 코드는 다음과 같습니다.


코드 복사 코드는 다음과 같습니다.
If (!mysql_connect("localhost","root","welefen")){
echo "데이터베이스 연결 실패"; }  
If (!mysql_select_db("welefen")){
echo "데이터베이스 테이블을 선택하지 못했습니다
"; }  
                           
$insert_user=array("welefen","welefen");//여기 Welefen은 각각 사용자 이름과 비밀번호입니다
If (mysql_query("insertuser('$insert_user[0]','$insert_user[1]') 호출")){
                    echo "$insert_user[0] 사용자 추가에 성공했습니다
";                       }else {
echo "$insert_user[0]
사용자를 추가하지 못했습니다.
}  
                           
$validate_user=array("welefen","welefen");//여기 Welefen은 각각 사용자 이름과 비밀번호입니다
Mysql_query("validateuser('$validate_user[0]',@a) 호출"); $Pwd=mysql_query("@a 선택")
$result=mysql_fetch_array($Pwd)
If ($result[0]==md5($validate_user[1])){
                 echo "$validate_user[0] 사용자가 올바르게 확인되었습니다
";
}else {  
                  echo "$validate_user[0]
사용자에 대한 확인 오류";
}  
                           
$modify_Pwd=array("welefen","weilefeng"); //welefen은 사용자 이름이고 weilefeng은 새 비밀번호입니다
If (mysql_query("수정Pwd('$modify_Pwd[0]','$modify_Pwd[1]') 호출")){
                                echo "$modigy_Pwd[0] 사용자의 비밀번호가 성공적으로 변경되었습니다
";                             }그밖에 {
| wd[0] 실패
"; 
}  
                           
$delete_user=array("welefen"); //welefen은 사용자 이름입니다
If (mysql_query("call deleteuser('$delete_user[0]')")){
                   echo "$delete_user[0] 사용자가 성공적으로 삭제되었습니다
";
}else {  
Echo "사용자 $ delete_user [0] 삭제 실패 & lt; br & gt;"; }  
?>

실제로 이러한 간단한 애플리케이션에는 저장 프로시저가 필요하지 않습니다. MySQL의 저장 프로시저를 설정하면 이보다 훨씬 더 복잡해집니다. 고객 서비스 측면에서도 부담이 되지만 데이터베이스 서비스에 대한 부담도 가중됩니다. 다양한 장단점을 현실적으로 따져봐야 합니다.

이 기사가 모든 사람의 PHP 프로그래밍 설계에 도움이 되기를 바랍니다.
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.