PHP的先行編譯的使用

來源:互聯網
上載者:User

標籤: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的先行編譯的使用

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.