標籤:word 傳回值 orm time 好的 配置資訊 訪問 資訊 sts
在PHP中,使用先行編譯不僅可以簡化代碼,還可以防止有些資料的泄露
<?php/** * 我直接針對PDO的封裝類 * User: seven * Date: 2017/7/26 * Time: 9:43 */class MyPDO{ /** 訪問資料庫的PDO對象 */ protected $pdo; /** * 當前類的建構函式 * 讀取資料庫配置資訊檔,並初始化PDO對象 */ function __construct() { if(file_exists(‘db.ini‘)){ $arr = parse_ini_file(‘db.ini‘); }else{ exit(‘沒有找到對應的資料庫設定檔資訊 ...‘); } $dsn = "{$arr[‘dbms‘]}:dbname={$arr[‘dbname‘]};host={$arr[‘host‘]};port={$arr[‘port‘]};charset={$arr[‘charset‘]}"; $user = $arr[‘user‘]; $password = $arr[‘password‘]; $this->pdo = new PDO($dsn,$user,$password); } /** * 銷毀自己的操作類時,同時銷毀被建立了的PDO對象 */ function __destruct() { $this->pdo = null; } /** * 執行DML動作陳述式 * @param $sql 需要執行的SQL語句 * @return int 返回執行語句後受到影響的行數 */ public function pdoExec($sql){ return $this->pdo->exec($sql); } /** * 返回結果為數組結構 * @param $sql 需要執行的SQL語句 * @param int $var 執行query函數的參數(可選值:PDO::FETCH_BOTH(預設),PDO::FETCH_NUM,PDO::FETCH_ASSOC) * @return array 將結果轉換為數組並返回,如果沒有查詢結果則返回一個空數組 */ public function arrayByPdoQuery($sql, $var=PDO::FETCH_BOTH){ $ps = $this->pdo->query($sql, $var); if($ps) return $ps->fetchAll(); return array(); } /** * 擷取查詢結果並封裝為一個對象數組 * @param $sql 需要執行的SQL語句 * @param string $class_name 建立類的名稱 * @param array $ctor_args 此數組的元素被傳遞給對應類的建構函式 * @return array 返回組裝好的對象數組 */ public function objectByPdoQuery($sql, $class_name=‘stdClass‘, $ctor_args=array()){ $ps = $this->pdo->query($sql); $arr = array(); if($ps){ while ($obj = $ps->fetchObject($class_name, $ctor_args)){ array_push($arr, $obj); } } return $arr; } /** * 使用PDO先行編譯語句執行DML操作並返回受影響的行數 * @param $sql 需要執行的SQL語句(先行編譯語句寫法) * @param array $arr 先行編譯語句需要添加的資料值,數組結構 * @return int 返回DML執行後受影響的行數 */ public function intByPdoPrepare($sql, array $arr=array()){ $ps =$this->pdo->prepare($sql); $ps->execute($arr); return $ps->rowCount(); } /** * 使用PDO先行編譯語句執行查詢操作並返回結果集合 * @param $sql 需要執行的SQL語句(先行編譯語句寫法) * @param array $arr 先行編譯語句需要添加的資料值,數組結構 * @return array 轉換為數組結構的傳回值結果 */ public function arrayByPdoPrepare($sql, array $arr=array()){ $ps =$this->pdo->prepare($sql); $ps->execute($arr); if($ps) return $ps->fetchAll(); return array(); } /** * 擷取查詢結果並封裝為一個對象數組 * @param $sql 需要執行的SQL語句 * @param array $arr 先行編譯語句需要添加的資料值,數組結構 * @param string $class_name 建立類的名稱 * @param array $ctor_args 此數組的元素被傳遞給對應類的建構函式 * @return array 返回組裝好的對象數組 */ public function objectByPdoPrepare($sql, array $arr=array(), $class_name=‘stdClass‘, $ctor_args=array()){ $ps =$this->pdo->prepare($sql); $ps->execute($arr); $arr = array(); if($ps){ while ($obj = $ps->fetchObject($class_name, $ctor_args)){ array_push($arr, $obj); } } return $arr; }}//include_once ‘Student.class.php‘;//$mp = new MyPDO();//$arr = $mp->arrayByPdoQuery(‘select * from students‘, PDO::FETCH_NUM);//var_dump($arr);//$arr = $mp->objectByPdoQuery(‘select * from student‘, ‘Student‘);//var_dump($arr[0]);//$mp->arrayByPdoPrepare(‘select * from student‘, ‘test‘);<?php/** * Created by PhpStorm. * User: seven * Date: 2017/7/27 * Time: 13:18 */include_once ‘MyPDO.class.php‘;//include_once ‘Student.class.php‘;$mp = new MyPDO();$sex = ‘男‘;//$sql = "select * from student where ssex=‘$sex‘";//$arr = $mp->objectByPdoQuery($sql, ‘Student‘);//var_dump($arr);$sql = "insert into student values (null,?,?,?,?,?,?)";$params = array( ‘王和河‘,‘男‘,‘1992-05-23‘,‘四川省成都市‘,‘13087654321‘,‘66668888‘);$num = $mp->intByPdoPrepare($sql, $params);echo $num.‘<br>‘;$sql = "select * from student where ssex=?";$arr = $mp->objectByPdoPrepare($sql,array($sex),‘Student‘);var_dump($arr);
PHP的先行編譯的使用