search
Homephp教程php手册php调用mysql存储过程实例分析,mysql实例分析

php调用mysql存储过程实例分析,mysql实例分析

本文实例分析了php调用mysql存储过程的方法。分享给大家供大家参考。具体分析如下:

Mysql存储过程创建语法,代码如下:

CREATE PROCEDURE和CREATE FUNCTION :

复制代码 代码如下:

CREATE PROCEDURE sp_name ([proc_parameter[,...]])
 
    [characteristic ...] routine_body
 
CREATE FUNCTION sp_name ([func_parameter[,...]])
 
    RETURNS type
 
    [characteristic ...] routine_body
 
    proc_parameter:
 
    [ IN | OUT | INOUT ] param_name type
 
    func_parameter:
 
    param_name type
 
type:
 
    Any valid MySQL data type
 
characteristic:
 
    LANGUAGE SQL
 
  | [NOT] DETERMINISTIC
 
  | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
 
  | SQL SECURITY { DEFINER | INVOKER }
 
  | COMMENT 'string'
 
routine_body:
 
    Valid SQL procedure statement or statements


当我们看完以后,就可以开始写一些简单的存储过程了,首先建立存储过程, Create procedure(子程序)、Create function(函数),代码如下:

复制代码 代码如下:

Create procedure sp_Name ([proc_parameter ])
routine_body

这里的参数类型可以是 IN OUT INOUTT,意思和单词的意思是一样的,IN 表示是传进来的参数,OUT 是表示传出去的参数,INOUT 是表示传进来但最终传回的参数,代码如下:

复制代码 代码如下:

Create functionsp_Name ([func_parameter ])
Returns type
Routine_body

Returns type 指定了返回的类型,这里给定的类型与返回值的类型要是一样的,否则会报错,下面是一个简单的例子,代码如下:

复制代码 代码如下:

mysql> delimiter //
mysql> create procedure g
    -> begin
    -> select version() i
    -> end
    -> //
Query OK, 0 rows affected
 
mysql> call getversion(@a
    -> //
Query OK, 0 rows affected
 
mysql> select @a;
    -> //
+---------------------+
| @a                  |
+---------------------+
| 5.0.45-community-nt |
+---------------------+
1 row in set (0.05 sec)


一个获取当前mysql版本的存储过程.那么php怎么与mysql的存储过程相结合呢.以下来自百度知道,代码如下:

复制代码 代码如下:

Drop table if exists user;  
    Create table user(  
        Id int unsigned not null auto_increment,  
        Name varchar(20) not null,  
        Pwd char(32) not null,  
        Primary key(Id)  
);


添加用户的存储过程,代码如下:

复制代码 代码如下:

Delimiter //  
    Create procedure insertuser(in username varchar(20),in userpwd varchar(32))  
    Begin  
        Insert into welefen.user(Name,Pwd) values (username,md5(userpwd));  
    End  
    //


验证用户的存储过程,代码如下:

复制代码 代码如下:

Delimiter //  
    Create procedure validateuser(in username varchar(20),out param1)  
    Begin   
        Select Pwd into param1 from welefen.user where Name=username;  
    End  
    //


修改密码的存储过程,代码如下:

复制代码 代码如下:

Delimiter //  
    Create procedure modifyPwd(in username varchar(20),in userpwd varchar(32))  
    Begin  
        Update welefen.user set Pwd=md5(userpwd) where Name=username;  
    End  
    //


删除用户的存储过程,代码如下:

复制代码 代码如下:

Delimiter //  
    Create procedure deleteuser(in username varchar(20)) 
Begin  
         delete from welefen.user where Name=username;  
    End  
    //


在客户端,我们给出如下的程序,代码如下:

复制代码 代码如下:

     if (!mysql_connect("localhost","root","welefen")){   
         echo "连接数据库失败";  
    }  
     if (!mysql_select_db("welefen")){  
         echo "选择数据库表失败
";  
    }  
      
    $insert_user=array("welefen","welefen");//这里的welefen分别为用户名、密码  
     if (mysql_query("call insertuser('$insert_user[0]','$insert_user[1]')")){  
         echo "添加用户$insert_user[0]成功
";  
    }else {  
         echo "添加用户$insert_user[0]失败
";  
    }  
      
    $validate_user=array("welefen","welefen");//这里的welefen分别为用户名、密码  
    mysql_query("call validateuser('$validate_user[0]',@a)");  
    $Pwd=mysql_query("select @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("call modifyPwd('$modify_Pwd[0]','$modify_Pwd[1]')")){ 
         echo "用户$modigy_Pwd[0]的密码修改成功
";  
    }else {
         echo "用户$modigy_Pwd[0]的密码修改失败
";  
    }  
      
    $delete_user=array("welefen");           //welefen为用户名  
     if (mysql_query("call deleteuser('$delete_user[0]')")){  
         echo "用户$delete_user[0]删除成功
";  
    }else {  
         echo "用户$delete_user[0]删除失败
";  
    }  
?>


这样就完成了,php调用mysql的存储过程,其实这些简单的应用,就用不上存储过程了,实际的应用是比这个复杂的多,可以看出,建立了mysql的存储过程可以极大的减少了客服端的压力,但是增加了数据库服务的压力,各种利弊得实际去衡量.

希望本文所述对大家的php程序设计有所帮助。

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

SecLists

SecLists

SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.

DVWA

DVWA

Damn Vulnerable Web App (DVWA) is a PHP/MySQL web application that is very vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, to help web developers better understand the process of securing web applications, and to help teachers/students teach/learn in a classroom environment Web application security. The goal of DVWA is to practice some of the most common web vulnerabilities through a simple and straightforward interface, with varying degrees of difficulty. Please note that this software

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Integrate Eclipse with SAP NetWeaver application server.

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.