1. 程式人生 > >php的PDO連線資料庫(二)

php的PDO連線資料庫(二)

上次講到了PDO的connect()方法和insert()方法

時間隔得不久,就昨天的事情,那麼就趁熱打鐵

現在還剩update()和delete()方法了

那麼繼續思考,update()方法需要什麼引數,我們不妨拿出update()的sql語句出來看看

UPDATE Person SET FirstName = 'Fred' WHERE LastName = 'Wilson'
---來自W3school

Person是表名,也就是$table了

FirstName是表中的欄位名,也可以看作$key

‘ Fred ’是欄位下的值,也可以看作$values

還有一個就是where,因為where十分多變,所以不能封裝成任意能用的

最後

function update($table,$array,$where=null)

update()裡面更新的資料肯定不止一個,那麼這裡就有一個連線欄位的東西,也是一個難點

FirstName = 'Fred'
這裡可以看出,更新的格式是:欄位名 = ‘欄位值’(如果有多個欄位,用“,”隔開)

所以,第一個欄位沒有“,”,然後接下來的欄位都要用“,”隔開

最後,拼接的方法為:

foreach ($array as $key => $value){
            if(isset($str) == null){
                $sep = "";
            }else{
                $sep = ",";
            }
            $str .= $sep.$key."='".$value."'";
        }

那麼,update()應該算是完成了。

最終程式碼為:

function update($table,$array,$where=null){
    try {
        $conn = connect();
        foreach ($array as $key => $value){
            if(isset($str) == null){
                $sep = "";
            }else{
                $sep = ",";
            }
            $str .= $sep.$key."='".$value."'";
        }
        $sql = "update {$table} set {$str} ".($where == null?null:"where".$where);
        $result = $conn->query( $sql );
        if($result){
            return $result;
        }else{
            return false;
        }
    } catch (PDOException $e) {
        echo "更新資料失敗".$e->getMessage();
    }
}

那麼,現在到delete()方法了。

delete()方法相對簡單

先看看delete的語句

DELETE FROM Person WHERE LastName = 'Wilson' 

可見,只有$table和$where條件

所以也不需要做什麼東西了

最主要的是運用where的選擇語句

$where = $where == null?null:"where".$where;

好了,話不多說,上程式碼:

function delete( $table,$where = null ){
    try {
        $conn = connect();
        $where = $where == null?null:"where".$where;
        $sql = "delete from {$table} {$where}";
        $result = $conn->exec ( $sql );
        return $result;
    } catch (PDOException $e) {
        echo "刪除資料失敗".$e->getMessage();
    }

增刪改查,我都給大家分析了一下,關鍵也是要思考

程式碼是我從慕課網的一個原生電商平臺上學習的

那麼最大的一個感觸就是,要學會拼接語句

以及,原生和框架開發的區別

框架之所以能快速開發是因為不用每次都自己造輪子

mysql的操作都是由封裝的

比如Thinkphp3.2裡面使用M()方法來使用curl

但是方法還是使用原生的比較容易理解

好啦

歡迎指正