PHP PDO是一個非常強大的數據庫操作擴展,其提供的API不僅可以操作MySQL數據庫,還支持一系列其他的關系型數據庫。不過,對于剛剛接觸PHP PDO的開發者來說,配置可能是一個比較煩瑣的過程。
首先,我們需要確認已經在PHP環境中加載了PDO擴展,可以在php.ini或者代碼中使用extension_dir和extension兩個選項開啟PDO。加載完成后,我們需要在代碼中連接數據庫。
$dsn = "mysql:host=localhost;dbname=mydatabase;charset=utf8"; $username = "myusername"; $password = "mypassword"; $pdo = new PDO($dsn, $username, $password);
在這段代碼中,我們使用PDO的構造方法來創建一個新的PDO實例。我們需要傳遞三個參數,分別是數據庫的DSN(數據源名稱),數據庫用戶名和數據庫密碼。DSN字符串包含了連接MySQL所需要的所有信息,包括主機名、用戶名、密碼、端口、數據庫名稱等。
在連接完數據庫后,我們還需要配置PDO實例的屬性。PDO實例有很多屬性可以配置,其中比較常用的有:
- PDO::ATTR_ERRMODE: 錯誤處理模式
- PDO::ATTR_DEFAULT_FETCH_MODE: 結果集返回模式
- PDO::ATTR_EMULATE_PREPARES: 模擬預處理語句
- PDO::ATTR_TIMEOUT: 連接超時時間
例如,我們可以使用如下代碼為PDO實例配置錯誤處理模式為異常模式:
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
這樣,在執行出錯時,PDO會自動拋出異常,方便我們進行錯誤調試。
另一個比較常用的配置是PDO::ATTR_EMULATE_PREPARES。開啟該選項后,PDO會模擬預處理語句來提高查詢性能和安全性。例如,我們可以使用如下代碼開啟該選項:
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, true);
在數據庫查詢時,我們需要構造SQL語句并進行查詢,在這一過程中,我們一般使用PDO的prepare和execute方法。其中,prepare方法會返回一個PDOStatement對象,而execute方法則會執行SQL語句并返回結果集。
例如,我們可以使用如下代碼查詢一張user表:
$sql = "SELECT * FROM user WHERE age > :age AND sex = :sex"; $sth = $pdo->prepare($sql); $sth->execute([':age' => 18, ':sex' => 'male']); $result = $sth->fetchAll();
在這段代碼中,我們使用PDO的prepare方法準備了一個SQL語句,其中使用了命名占位符來避免SQL注入攻擊。之后,我們使用execute方法傳遞了一個參數數組,并執行了SQL語句。最終,使用fetchAll方法獲取了查詢結果集。
總結來說,PHP PDO是一個非常強大的數據庫操作擴展,配置和使用也比較簡單。我們只需要在連接數據庫的時候傳遞DSN、用戶名和密碼,然后配置PDO實例的屬性即可。在查詢時,我們可以使用prepare和execute方法來構造SQL語句并查詢數據庫。