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...語句塊傳回錯誤資訊。關鍵代碼如下:
使用者昵稱:
密 碼:
郵 箱:
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:
';
echo 'SQL Query;'.$query;
echo '
';
echo "Error:".$e -> getMessage()."
";
echo "Code:".$e ->getCode()."
";
echo "File:".$e ->getFile()."
";
echo "Line:".$e ->getLine()."
";
echo "Trace:".$e ->getTraceAsString()."
";
echo "
";
}
}
結果如下:
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5yM0kDZ5kjNhN2YzQWOhZWZxUmMkJWOidjN1QWZ0YDOj9CX0JXZ252bj91Ztl2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
主要是建立一個存儲的過程,然後在調用這個存儲過程,小夥伴們可以在本地自己試一試~!~
總結:
關于PDO資料庫抽象層到這裡就全部結束了,我們重點介紹了資料庫抽象層——PDO,從PDO概述,特點和安裝開始講解,到PDO的執行個體應用,其中包括:如何連接配接不同的資料庫,如何執行SQL語句,如何擷取結果集以及執行錯誤處理,再到PDO的進階應用:事務和存儲過程,并且每個部分都有相應的執行個體,通過本章的學習,相信小夥伴們能夠掌握PDO技術的應用。那麼我們下一個專題不見不散!