
批改狀態(tài):合格
老師批語:完成的不錯,繼續(xù)加油
=============================================
PHP 數(shù)據(jù)對象 (PDO) 擴展為PHP訪問數(shù)據(jù)庫定義了一個輕量級的一致接口。
PDO 提供了一個數(shù)據(jù)訪問抽象層,這意味著,不管使用哪種數(shù)據(jù)庫,都可以用相同的函數(shù)(方法)來查詢和獲取數(shù)據(jù)。
PDO隨PHP5.1發(fā)行,在PHP5.0的PECL擴展中也可以使用,無法運行于之前的PHP版本。
# connect.php文件
// 數(shù)據(jù)庫連接參數(shù)
$db = [
'type' => 'mysql',
'host' => 'localhost',
'dbname' => 'php',
'username' => 'root',
'password' => 'root',
];
// 配置數(shù)據(jù)源DSN信息
$dsn = "{$db['type']}:host={$db['host']};dbname={$db['dbname']}";
// 連接數(shù)據(jù)庫
try {
$pdo = new PDO($dsn, $db['username'], $db['password']);
} catch (PDOException $e) {
die('Connection Failed: ' . $e->getMessage());
}
PDOStatement: 預(yù)處理對象(SQL語句對象)
prepare(): 預(yù)處理方法, 用來生成預(yù)處理對象PDOStatement
// 1. 連接數(shù)據(jù)庫
require __DIR__ . '/connect.php';
// 2. 創(chuàng)建SQL語句模板
$sql = 'INSERT INTO `system` SET `sys_id`= :sys_id, `title`=:title, `desc`=:desc, `key`=:key, `copy`=:copy';
// 3. 創(chuàng)建SQL語句對象
$stmt = $pdo->prepare($sql);
// 1. 連接數(shù)據(jù)庫
require __DIR__ . '/connect.php';
// 2. 創(chuàng)建SQL語句模板
$sql = 'INSERT INTO `system` SET `sys_id`= :sys_id, `title`=:title, `desc`=:desc, `key`=:key, `copy`=:copy';
// 3. 創(chuàng)建SQL語句對象
$stmt = $pdo->prepare($sql);
// 4. 將變量綁定到SQL語句模板的命名占位符上
$sys_id = 1;
$title = '少兒故事';
$desc = '收集全網(wǎng)最新最全的影視資源';
$key = '國產(chǎn),歐美,日韓';
$copy = '小學(xué)生';
$stmt->bindParam('sys_id', $sys_id, PDO::PARAM_INT);
$stmt->bindParam('title', $title, PDO::PARAM_STR);
$stmt->bindParam('desc', $desc, PDO::PARAM_STR);
$stmt->bindParam('key', $key, PDO::PARAM_STR);
$stmt->bindParam('copy', $copy, PDO::PARAM_STR);
# 新增記錄
// 1. 連接數(shù)據(jù)庫
require __DIR__ . '/connect.php';
// 2. 創(chuàng)建SQL語句模板
$sql = 'INSERT INTO `system` SET `sys_id`= :sys_id, `title`=:title, `desc`=:desc, `key`=:key, `copy`=:copy';
// 3. 創(chuàng)建SQL語句對象
$stmt = $pdo->prepare($sql);
// 4. 將變量綁定到SQL語句模板的命名占位符上
$sys_id = 1;
$title = '少兒動漫';
$desc = '收集全網(wǎng)最新最全的影視資源';
$key = '國產(chǎn),歐美,日韓';
$copy = '小學(xué)生';
$stmt->bindParam('sys_id', $sys_id, PDO::PARAM_INT);
$stmt->bindParam('title', $title, PDO::PARAM_STR);
$stmt->bindParam('desc', $desc, PDO::PARAM_STR);
$stmt->bindParam('key', $key, PDO::PARAM_STR);
$stmt->bindParam('copy', $copy, PDO::PARAM_STR);
// 5. 執(zhí)行SQL操作
if ($stmt->execute()) {
if ($stmt->rowCount() > 0) {
echo '成功添加' . $stmt->rowCount(). '條記錄, 該記錄的主鍵id是: ' . $pdo->lastInsertId();
}
} else {
die('<pre>' . print_r($stmt->errorInfo(), true));
}
// 6. 銷毀pdo, 關(guān)閉連接
$pdo = null; // unset($pdo) 等價
# 更新記錄
// 1. 連接數(shù)據(jù)庫
require __DIR__ . '/connect.php';
// 2. 創(chuàng)建SQL語句模板
$sql = 'UPDATE `category` SET `name` = :name, `alias` = :alias WHERE `cate_id`=:cate_id';
// 3. 創(chuàng)建SQL語句對象
$stmt = $pdo->prepare($sql);
// 4. 將變量綁定到SQL語句模板的命名占位符上
$name = 'xjj';
$alias = '小姐姐';
$cate_id = 4;
$stmt->bindParam('name', $name, PDO::PARAM_STR);
$stmt->bindParam('alias', $alias, PDO::PARAM_STR);
$stmt->bindParam('cate_id', $cate_id, PDO::PARAM_INT);
// 5. 執(zhí)行SQL操作
if ($stmt->execute()) {
if ($stmt->rowCount() > 0) {
echo '成功更新了' . $stmt->rowCount() . '條記錄';
}
} else {
die('<pre>' . print_r($stmt->errorInfo(), true));
}
// 6. 銷毀pdo, 關(guān)閉連接
$pdo = null; // unset($pdo) 等價
# 刪除記錄
// 1. 連接數(shù)據(jù)庫
require __DIR__ . '/connect.php';
// 2. 創(chuàng)建SQL語句模板
$sql = 'DELETE FROM `category` WHERE `cate_id`=:cate_id';
// 3. 創(chuàng)建SQL語句對象
$stmt = $pdo->prepare($sql);
// 4. 將變量綁定到SQL語句模板的命名占位符上
$cate_id = 4;
$stmt->bindParam('cate_id', $cate_id, PDO::PARAM_INT);
// 5. 執(zhí)行SQL操作
if ($stmt->execute()) {
if ($stmt->rowCount() > 0) {
echo '成功刪除了' . $stmt->rowCount() . '條記錄';
}
} else {
die('<pre>' . print_r($stmt->errorInfo(), true));
}
// 6. 銷毀pdo, 關(guān)閉連接
$pdo = null; // unset($pdo) 等價
# 查詢1: fetch() + while()
// 1. 連接數(shù)據(jù)庫
require __DIR__ . '/connect.php';
// 2. 創(chuàng)建SQL語句模板
$sql = 'SELECT * FROM `movies` WHERE `cate_id` = :cate_id';
// 3. 創(chuàng)建SQL語句對象
$stmt = $pdo->prepare($sql);
// 4. 將變量綁定到SQL語句模板的命名占位符上
$cate_id = 1;
$stmt->bindParam('cate_id', $cate_id, PDO::PARAM_INT);
// 5. 執(zhí)行SQL操作
$stmt->execute();
// 遍歷
while ($movie = $stmt->fetch(PDO::FETCH_ASSOC)) {
echo '<pre>' . print_r($movie, true);
}
// 6. 銷毀pdo, 關(guān)閉連接
$pdo = null; // unset($pdo) 等價
# 查詢2: fetchAll()
// 1. 連接數(shù)據(jù)庫
require __DIR__ . '/connect.php';
// 2. 創(chuàng)建SQL語句模板
$sql = 'SELECT * FROM `movies` WHERE `cate_id` = :cate_id';
// 3. 創(chuàng)建SQL語句對象
$stmt = $pdo->prepare($sql);
// 4. 將變量綁定到SQL語句模板的命名占位符上
$cate_id = 3;
$stmt->bindParam('cate_id', $cate_id, PDO::PARAM_INT);
// 5. 執(zhí)行SQL操作
$stmt->execute();
// 遍歷, 返回二維數(shù)組
$movies = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($movies as $movie) {
echo '<pre>' . print_r($movie, true);
}
// 6. 銷毀pdo, 關(guān)閉連接
$pdo = null; // unset($pdo) 等價
# 查詢3: bindColumn()
// 1. 連接數(shù)據(jù)庫
require __DIR__ . '/connect.php';
// 2. 創(chuàng)建SQL語句模板
$sql = 'SELECT * FROM `movies` WHERE `cate_id` = :cate_id';
// 3. 創(chuàng)建SQL語句對象
$stmt = $pdo->prepare($sql);
// 4. 將變量綁定到SQL語句模板的命名占位符上
$cate_id = 3;
$stmt->bindParam('cate_id', $cate_id, PDO::PARAM_INT);
// 5. 執(zhí)行SQL操作
$stmt->execute();
// 將結(jié)果集中的記錄中的字段, 綁定到指定的變量上
$stmt->bindColumn('name', $name);
$stmt->bindColumn('detail', $detail);
while ($stmt->fetch(PDO::FETCH_ASSOC)) {
$detail = mb_substr($detail,0, 20,'utf-8');
echo '片名: ' . $name . '<br>' . '簡介: ' . $detail . '...<hr>';
}
// 6. 銷毀pdo, 關(guān)閉連接
$pdo = null; // unset($pdo) 等價
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號