PHP操作數據庫——PDO

本文簡單介紹PDO對象下各個函數的使用方法。

事先聲明:本文不詳盡,見具體請前往PHP手冊參閱。

安裝PDO

PDO其實就是一個PHP的模塊。

Windows

在Windows下面很簡單
打開PHP所在文件夾下的php.ini配置文件
先改好PHP的拓展目錄,也就是extension的目錄(可以通過Search跳轉),一半理論上把Windows對應那行前面的“;”去掉就好了。
在后文里,把extension=php_pdo.dllextension=php_pdo_XXX.dll(XXX表示你所用的數據庫類型)前面的“;”去掉

Linux

至于Linux(測試環境Ubuntu16.04,PHP7),使用APT安裝的情況下它默認是開好了PDO的,不用再去編譯。
測試環境Ubuntu16.04,PHP7:首先我們應該知道在linux下方便地開啟模塊是用phpenmod命令。
然后我們在裝好php之后就可以在bash里phpenmod pdo來先打開PDO擴展。
然后sudo apt install php7.0-mysql(版本注意自行更改)。
這樣它會將編譯好的pdo_mysql模塊文件放到你的mod_avaliable目錄,現在就可以通過phpenmod pdo_mysql來開啟PDO中mysql的驅動。
編譯安裝方法這里不細說。

使用PDO

正如我們所知,PDO是OO(面向對象)的,所以在使用它前我們需要實例化一個PDO對象。

1. 實例化

命令

$myPDO = new PDO($dsn[, $username[, $password[, $driver_options]]])
注:“[”與“]”中內容表示可空。

解析

我們可以看見一共有四個參數
$dsn 就是DSN,關于DSN是啥不知道的點我。所以,舉個栗子我們連接MySQL數據庫就可以這樣在實例化之前這樣寫$dsn = "mysql:host=localhost;dbname=test";
$username 就是你對應的數據庫的用戶名。
$password 就是用戶名對應的密碼。
最后是$driver_options,需要說明的是,前三個都是字符串形式,而它則是數組形式,一般不是特殊需求不用寫它,想了解的自己去看手冊【畢竟這里只是簡單介紹對吧】。

2. 對象函數

PDO實例化后就可以通過這個實例化對象來進行數據庫sql操作。
常用的有如下函數

函數 描述
PDO::exec 執行一條 SQL 語句,并返回受影響的行數
PDO::query 執行一條SQL語句,返回一個PDOStatement對象
PDO::prepare 準備要執行的SQL語句,返回一個PDOStatement對象
PDO::quote 返回一個添加引號的字符串,用于SQl語句中
PDO::lastInsertId 返回最后插入行的ID或序列值
PDO::setAttribute 設置屬性

可以看到exec和query非常相似,由于返回內容的不同,我們一般使用exec進行增刪改操作,使用query進行查操作。

在通過query得到的PDOStatement對象上我們可以進行進一步操作(往往是數據的獲取,即查操作)。

函數 描述
PDOStatement::execute 執行一條預處理語句(prepare)
PDOStatement::rowCount() 返回受上一個 SQL 語句影響的行數
PDOStatement::fetch 從結果集中獲取下一行
PDOStatement::fetchAll 返回一個包含結果集中所有行的數組
PDOStatement::fetchColumn 從結果集中的下一行返回單獨的一列
PDOStatement::fetchObject 獲取下一行并作為一個對象返回
PDOStatement::bindParam 綁定一個參數到指定變量名
PDOStatement::bindValue 把一個值綁定到一個參數

具體用法詳見手冊。

舉例

這里我們通過增刪改查的例子來進行學習。

一般我們增直接就是使用exec函數,通過返回的影響的行數判斷增操作是否成功完成。

$myPDOExample = new PDO("mysql:host=localhost;dbname=test","root","root");
$sql = "INSERT INTO user  ('name', 'password', 'phone' ) VALUES ('用戶1', '123456', '10086'),('用戶2', '654321', '10010');";
$result = myPDOExample::exec($sql);

例子表示向user表中插入了兩條數據
不知道怎么SQL中Insert插入數據的看這里

同樣也是exec

$myPDOExample = new PDO("mysql:host=localhost;dbname=test","root","root");
$sql = "DELETE FROM fruit WHERE color = 'red' ;";
$result = myPDOExample::exec($sql);

例子表示刪除fruit表中所有color的值為red的數據

同樣也是exec

$myPDOExample = new PDO("mysql:host=localhost;dbname=test","root","root");
$sql = "UPDATE Person SET FirstName = 'Fred' WHERE LastName = 'Wilson' ;";
$result = myPDOExample::exec($sql);

表示把所有的LastName值為Wilson的行中的FirstName值改為Fred

查是重頭戲。
我們首先通過如上的步驟進行查的準備

$myPDOExample = new PDO("mysql:host=localhost;dbname=test","root","root");
$sql = "SELECT * FROM user WHERE gender='female' ;";

這條SQL表示從user表里取出所有性別gender是女female的行的所有數據(即*)。
我們通過query先對它進行查詢操作,并獲得一個PDOStatement對象。

$result = myPDOExample::query($sql);

這里需要根據下一步對數據的操作來選取$result的函數。

$dataString = $resylt::fetch() //知道只有一個女的,所以只需要取一行。
$dataArray = $resylt::fetchAll() //有好多女的,以數組方式全取出來并直接表達
$dataObject = $resylt::fetchObject() //有好多女的,以對象方式全取出來并進一步操作

補充

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 在剛剛接觸PHP時,曾遇到過這樣一個坑,就是在PHP7.0版本中無法使用mysql連接數據庫,當時只好降級PHP版...
    kangyiii閱讀 2,106評論 0 1
  • Php:腳本語言,網站建設,服務器端運行 PHP定義:一種服務器端的HTML腳本/編程語言,是一種簡單的、面向對象...
    廖馬兒閱讀 2,202評論 2 38
  • pdo類PDO是一個“數據庫訪問抽象層”,作用是統一各種數據庫的訪問接口,與mysql和mysqli的函數庫相比,...
    桖辶殤閱讀 890評論 0 0
  • php與mysql的連接有三種API接口,分別是:PHP的MySQL擴展 、PHP的mysqli擴展 、PHP數據...
    followyounger1閱讀 2,862評論 1 5
  • 今天總公司的營銷總監來鄭州培訓,主題是銷售,那到底什么是銷售,怎么銷售? 回顧自己過去的經歷,上過的各種課程,體悟...
    小酒窩天使閱讀 151評論 0 0