今天我們來聊聊php中的pdo,pdo可以使我們更加方便的連接數(shù)據(jù)庫,同時具有很好的安全性能。下面我們來看看pdo連接數(shù)據(jù)庫的具體方法。
1.首先我們需要在php代碼中引用pdo類庫:
<?php // 引入 PDO 類庫 try { $dsn = 'mysql:host=localhost;dbname=test'; $username = 'root'; $password = '123456'; $options = [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, ]; $pdo = new PDO($dsn, $username, $password, $options); } catch (PDOException $e) { echo 'Error: ' . $e->getMessage(); exit(); } ?>
在上面的代碼中,我們使用了try...catch語法塊來捕獲pdo連接數(shù)據(jù)庫有可能發(fā)生的異常。$dsn表示要連接的數(shù)據(jù)庫類型和數(shù)據(jù)庫名稱,$username和$password表示連接數(shù)據(jù)庫時需要用到的用戶名和密碼。$options表示連接的一些參數(shù),比如錯誤模式ERRMODE_EXCEPTION表示有異常時拋出PDOException異常。FETCH_ASSOC表示在讀取數(shù)據(jù)時以關聯(lián)數(shù)組的形式返回數(shù)據(jù)。
2.使用pdo連接數(shù)據(jù)庫
<?php $pdo = new PDO("mysql:host=localhost;dbname=test","root","123456"); $statement = $pdo->query('SELECT * from user'); while($row = $statement->fetch()) { echo $row['id'] . '-' . $row['name'] . '-' . $row['age'] . '<br />'; } ?>
在上面的代碼中,我們使用了pdo中的query方法來發(fā)送sql查詢,使用fetch方法來獲取查詢結(jié)果。如果查詢結(jié)果是多條記錄,我們可以使用while循環(huán)來處理。在循環(huán)中每次取出一條記錄,并對記錄進行操作。
3.使用pdo來執(zhí)行sql語句
<?php $sql = "INSERT INTO user(name,age) VALUES (:name,:age)"; $statement = $pdo->prepare($sql); $statement->execute(array(':name' => 'tom', ':age' => '20')); $count = $statement->rowCount(); echo $count . ' records added.'; ?>
上面的代碼中,使用了pdo中的prepare方法來編譯sql語句,execute方法將需要執(zhí)行的語句和參數(shù)數(shù)組一起傳入。使用rowCount方法來獲取執(zhí)行成功的記錄數(shù)。
4.使用pdo綁定命名參數(shù)
<?php $name = 'tom'; $age = 20; $statement = $pdo->prepare('SELECT * from user WHERE name=:name AND age=:age'); $statement->bindParam(':name', $name); $statement->bindParam(':age', $age); $statement->execute(); while($row = $statement->fetch()) { echo $row['id'] . '-' . $row['name'] . '-' . $row['age'] . '<br />'; } ?>
上面的代碼中,我們使用了bindParam方法來將變量值與命名參數(shù)進行綁定。查詢結(jié)果將返回與綁定的變量對應的數(shù)據(jù)記錄。
5.使用pdo預處理語句(也稱為存儲過程)
<?php $stmt = $pdo->prepare('CALL test(?,?)'); $stmt->bindParam(1, $in_param); $stmt->bindParam(2, $out_param, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT, 4000); $in_param = 'hello'; $stmt->execute(); echo $out_param; ?>
上面的代碼中,我們使用pdo的預處理語句來執(zhí)行存儲過程。在存儲過程中我們使用了bindparam方法將參數(shù)與命名參數(shù)進行綁定。PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT表示我們需要傳入一個字符串類型的參數(shù),并且將輸出結(jié)果返回$no_of_rows = $stmt->rowCount();參數(shù)。4000表示最大值為4000個字符的字符串。
以上就是關于php pdo連接數(shù)據(jù)庫的簡要介紹了,通過這次學習我們可以發(fā)現(xiàn)是使用pdo連接數(shù)據(jù)庫非常方便,同時具有很好的安全性能。如果你還沒有嘗試過pdo,那就去試試吧。