Rumah >pembangunan bahagian belakang >tutorial php >PDO中的存储过程的详细介绍

PDO中的存储过程的详细介绍

黄舟
黄舟asal
2017-04-28 17:47:493110semak imbas

PDO中的存储过程的详细介绍

PDO中存储过程允许在更接近于数据的位置操作数据,从而减少带宽的使用,它们使数据独立于脚本逻辑,允许使用不同语言的多个系统以相同的方式访问数据,从而节省了花费在编码和调试上的宝贵时间,同时他使用预定义的方案执行操作,提高查询速度,并且能阻止与数据的直接相互作用,从而起到保护数据的作用!

上一篇文章《PDO中的事务处理具体介绍》中,我们介绍了关于PDO的事务处理,那么我们这篇文章给大家介绍PDO中的存储过程!

首先来讲解如何在PDO中调用存储过程,这里先创建一个存储过程,其SQL语句如下:

drop procedure if exists pro_reg;
delimiter//
create procedure pro_reg(in nc varchar(80),in pwd varchar(80), in email varchar(80),in address varchar(50))
begin
insert into tb_reg(name,pwd,email,address)values(nc,pwd,email,address);
end;
//

“drop”语句删除MySQL服务器中已经存在的存储过程pro_reg。

“delimiter//”的作用是将语句结束符更以为“//”。

“in nc varchar(80).......in address varchar(50)”表示要向存储过程中传入的参数。

“begin......end”表示存储过程中的语句块,它的作用类似与PHP语言中的“{.......}”。

存储过程创建成功后,下面调用存储过程,实现用户注册信息的添加操作,具体步骤如下。

创建index.php文件。首先,创建form表单,将用户信息通过POST方法提交到本页。然后,在本页中编写PHP脚本,通过PDO连接MySQL数据库,并且设置数据库编码格式为UTF-8,获取表单中提交的用户注册信息。接着,通过call语句调用存储过程pro_reg,将用户注册信息添加到数据表中。最后,通过try...catch...语句块返回错误信息。关键代码如下:

<form name="form1" action="4.php" method="post">
    用户昵称:<input type="text" name="nc"><br>
    密   码:<input type="password" name="password"><br>
    邮   箱:<input type="text" name="email"><br>
    <input type="submit" name="Submit" value="注册">
    <input type="submit" name="Submit" value="重写">
</form>
<?php
if($_POST["Submit"]){
header("Content-Type:text/html; charset=utf-8");    //设置页面的编码格式
$dbms = "mysql";                                  // 数据库的类型
$dbName ="php_cn";                                //使用的数据库名称
$user = "root";                                   //使用的数据库用户名
$pwd = "root";                                    //使用的数据库密码
$host = "localhost";                              //使用的主机名称
$dsn  = "$dbms:host=$host;dbname=$dbName";
try {
    $pdo = new PDO($dsn, $user, $pwd);//初始化一个PDO对象,就是创建了数据库连接对象$pdo
 $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $nc = $_POST[&#39;nc&#39;];
    $password = md5($_POST[&#39;password&#39;]);
    $email = $_POST[&#39;email&#39;];
    $query = "call pro_reg(&#39;$nc&#39;,&#39;$password&#39;,&#39;$email&#39;)";
    $res = $pdo->prepare($query);//准备查询语句
    if ($res->execute()) {
        echo "添加数据库成功";
    } else {
        echo "添加数据库失败";
    }
}catch (PDOException $e){
    echo "PDO Exception Caught";
    echo &#39;Error with the database:<br>&#39;;
    echo &#39;SQL Query;&#39;.$query;
    echo &#39;<pre class="brush:php;toolbar:false">&#39;;
    echo "Error:".$e -> getMessage()."<br>";
    echo "Code:".$e ->getCode()."<br>";
    echo "File:".$e ->getFile()."<br>";
    echo "Line:".$e ->getLine()."<br>";
    echo "Trace:".$e ->getTraceAsString()."<br>";
    echo  "
"; } }

结果如下:

91.png

主要是创建一个存储的过程,然后在调用这个存储过程,小伙伴们可以在本地自己试一试~!~

总结:

关于PDO数据库抽象层到这里就全部结束了,我们重点介绍了数据库抽象层——PDO,从PDO概述,特点和安装开始讲解,到PDO的实例应用,其中包括:如何连接不同的数据库,如何执行SQL语句,如何获取结果集以及执行错误处理,再到PDO的高级应用:事务和存储过程,并且每个部分都有相应的实例,通过本章的学习,相信小伙伴们能够掌握PDO技术的应用。那么我们下一个专题不见不散!

Atas ialah kandungan terperinci PDO中的存储过程的详细介绍. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn