最近使用PHP資料庫訪問最新的一種技術 POD,不封裝,代碼也寫得很少。 下面我將貼出My Code。
代碼部分:
<?php $dsn = "mysql:host=localhost;dbname=mysqldatabasedemo"; $db = new PDO($dsn,'root','123456@#',array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES'GBK';")); $someInParameter1='hellow'; $stmt = $db->prepare("CALL outputProcudure(:addName,@outASD)"); $stmt->bindParam(':addName', $someInParameter1); if($stmt->execute()) { $rs=$db->query('select @outASD')->fetchAll(); $dataArray=$rs[0]; echo("<script type='text/javascript'> alert('"+$dataArray[0]+"');</script>"); } else { echo("<script type='text/javascript'> alert('插入失敗');</script>"); }?>
mysql預存程序:
PHP_PDO 調用mysql 帶返回參數的預存程序
DROP PROCEDURE IF EXISTS pro_test; create procedure pro_test(in val VARCHAR(50) ,out rtn int) begin declare err INT default 0; -- 如果出現異常,會自動處理並rollback declare exit handler for sqlexception ROLLBACK ;
-- 啟動事務 start transaction;
insert into test_user values(NULL,1,'啊是大三的'); -- set err = @@IDENTITY; -- = 擷取上一次插入的自增ID; set err =last_insert_id(); -- 擷取上一次插入的自增ID insert into test_user VALUES(NULL,val,err); -- 運行沒有異常,提交事務 commit; -- 設定傳回值為1 set rtn=1; end;
$name = '成都市'; $stmt = $db->prepare("CALL pro_test(?,@sp_result);"); $stmt->bindParam(1, $name); $stmt->execute (); $outputArray = $db->query("select @sp_result")->fetch(PDO::FETCH_ASSOC);
<span style="font-family: Arial, Helvetica, sans-serif;"> </span><span style="font-family: Arial, Helvetica, sans-serif;">print_r($outputArray["@sp_result"]);</span>