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['nc']; $password = md5($_POST['password']); $email = $_POST['email']; $query = "call pro_reg('$nc','$password','$email')"; $res = $pdo->prepare($query);//准备查询语句 if ($res->execute()) { echo "添加数据库成功"; } else { echo "添加数据库失败"; } }catch (PDOException $e){ echo "PDO Exception Caught"; echo 'Error with the database:<br>'; echo 'SQL Query;'.$query; echo '<pre class="brush:php;toolbar:false">'; 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 ""; } }
結果如下:
#主要是建立一個儲存的過程,然後在呼叫這個儲存過程,小夥伴們可以在本地自己試試~! ~
總結:
關於PDO資料庫抽象層到這裡就全部結束了,我們重點介紹了資料庫抽象層-PDO,從PDO概述,特點和安裝開始講解,到PDO的實例應用,其中包括:如何連接不同的資料庫,如何執行SQL語句,如何獲取結果集以及執行錯誤處理,再到PDO的高級應用:事務和預存過程,並且每個部分都有相應的實例,透過本章的學習,相信小夥伴們能夠掌握PDO技術的應用。那我們下一個專題不見不散!
以上是PDO中的預存程序的詳細介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!