亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

搜索
博主信息
博文 25
粉絲 0
評論 0
訪問量 35235
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板
使用PDO操作數(shù)據(jù)庫|學(xué)習(xí)筆記-大型CMS開發(fā)實戰(zhàn)第九期
宿州市筋斗云信息科技-Vip
原創(chuàng)
1114人瀏覽過

使用PDO操作數(shù)據(jù)庫|學(xué)習(xí)筆記-大型CMS開發(fā)實戰(zhàn)第九期


=============================================

PHP 數(shù)據(jù)對象 (PDO) 擴展為PHP訪問數(shù)據(jù)庫定義了一個輕量級的一致接口。
PDO 提供了一個數(shù)據(jù)訪問抽象層,這意味著,不管使用哪種數(shù)據(jù)庫,都可以用相同的函數(shù)(方法)來查詢和獲取數(shù)據(jù)。
PDO隨PHP5.1發(fā)行,在PHP5.0的PECL擴展中也可以使用,無法運行于之前的PHP版本。


PDO簡介圖


pdo連接數(shù)據(jù)庫


pdo連接數(shù)據(jù)庫

  1. # connect.php文件
  2. // 數(shù)據(jù)庫連接參數(shù)
  3. $db = [
  4. 'type' => 'mysql',
  5. 'host' => 'localhost',
  6. 'dbname' => 'php',
  7. 'username' => 'root',
  8. 'password' => 'root',
  9. ];
  10. // 配置數(shù)據(jù)源DSN信息
  11. $dsn = "{$db['type']}:host={$db['host']};dbname={$db['dbname']}";
  12. // 連接數(shù)據(jù)庫
  13. try {
  14. $pdo = new PDO($dsn, $db['username'], $db['password']);
  15. } catch (PDOException $e) {
  16. die('Connection Failed: ' . $e->getMessage());
  17. }

PDO預(yù)處理


PDOStatement: 預(yù)處理對象(SQL語句對象)
prepare(): 預(yù)處理方法, 用來生成預(yù)處理對象PDOStatement

  1. // 1. 連接數(shù)據(jù)庫
  2. require __DIR__ . '/connect.php';
  3. // 2. 創(chuàng)建SQL語句模板
  4. $sql = 'INSERT INTO `system` SET `sys_id`= :sys_id, `title`=:title, `desc`=:desc, `key`=:key, `copy`=:copy';
  5. // 3. 創(chuàng)建SQL語句對象
  6. $stmt = $pdo->prepare($sql);

PDO參數(shù)綁定


  • bindParam(): 將參數(shù)綁定到SQL語句模板上
  • 常用的預(yù)定義常量:
    • PDO::PARAM_INT: 整數(shù)類型
    • PDO::PARAM_STR: 字符串類型
    • PDO::FETCH_ASSOC: 獲取結(jié)果集中的關(guān)聯(lián)部分
  1. // 1. 連接數(shù)據(jù)庫
  2. require __DIR__ . '/connect.php';
  3. // 2. 創(chuàng)建SQL語句模板
  4. $sql = 'INSERT INTO `system` SET `sys_id`= :sys_id, `title`=:title, `desc`=:desc, `key`=:key, `copy`=:copy';
  5. // 3. 創(chuàng)建SQL語句對象
  6. $stmt = $pdo->prepare($sql);
  7. // 4. 將變量綁定到SQL語句模板的命名占位符上
  8. $sys_id = 1;
  9. $title = '少兒故事';
  10. $desc = '收集全網(wǎng)最新最全的影視資源';
  11. $key = '國產(chǎn),歐美,日韓';
  12. $copy = '小學(xué)生';
  13. $stmt->bindParam('sys_id', $sys_id, PDO::PARAM_INT);
  14. $stmt->bindParam('title', $title, PDO::PARAM_STR);
  15. $stmt->bindParam('desc', $desc, PDO::PARAM_STR);
  16. $stmt->bindParam('key', $key, PDO::PARAM_STR);
  17. $stmt->bindParam('copy', $copy, PDO::PARAM_STR);

PDOStatement 類常用方法


  • execute(): 執(zhí)行SQL語句(讀/寫)
  • rowCount(): 返回受影響的記錄數(shù)量(不適合SELECT)
  • errorInfo(): 返回錯誤信息數(shù)組
  • fetch(): 獲取結(jié)果集中的下一行
  • fetchAll(): 返回結(jié)果集中的所有行
  • fetchColumn(): 返回結(jié)果集下一行的單獨的一列
  • bindColumn(): 將結(jié)果集某字段綁定到指定變量上
1.新增數(shù)據(jù)

  1. # 新增記錄
  2. // 1. 連接數(shù)據(jù)庫
  3. require __DIR__ . '/connect.php';
  4. // 2. 創(chuàng)建SQL語句模板
  5. $sql = 'INSERT INTO `system` SET `sys_id`= :sys_id, `title`=:title, `desc`=:desc, `key`=:key, `copy`=:copy';
  6. // 3. 創(chuàng)建SQL語句對象
  7. $stmt = $pdo->prepare($sql);
  8. // 4. 將變量綁定到SQL語句模板的命名占位符上
  9. $sys_id = 1;
  10. $title = '少兒動漫';
  11. $desc = '收集全網(wǎng)最新最全的影視資源';
  12. $key = '國產(chǎn),歐美,日韓';
  13. $copy = '小學(xué)生';
  14. $stmt->bindParam('sys_id', $sys_id, PDO::PARAM_INT);
  15. $stmt->bindParam('title', $title, PDO::PARAM_STR);
  16. $stmt->bindParam('desc', $desc, PDO::PARAM_STR);
  17. $stmt->bindParam('key', $key, PDO::PARAM_STR);
  18. $stmt->bindParam('copy', $copy, PDO::PARAM_STR);
  19. // 5. 執(zhí)行SQL操作
  20. if ($stmt->execute()) {
  21. if ($stmt->rowCount() > 0) {
  22. echo '成功添加' . $stmt->rowCount(). '條記錄, 該記錄的主鍵id是: ' . $pdo->lastInsertId();
  23. }
  24. } else {
  25. die('<pre>' . print_r($stmt->errorInfo(), true));
  26. }
  27. // 6. 銷毀pdo, 關(guān)閉連接
  28. $pdo = null; // unset($pdo) 等價

2.更新數(shù)據(jù)

  1. # 更新記錄
  2. // 1. 連接數(shù)據(jù)庫
  3. require __DIR__ . '/connect.php';
  4. // 2. 創(chuàng)建SQL語句模板
  5. $sql = 'UPDATE `category` SET `name` = :name, `alias` = :alias WHERE `cate_id`=:cate_id';
  6. // 3. 創(chuàng)建SQL語句對象
  7. $stmt = $pdo->prepare($sql);
  8. // 4. 將變量綁定到SQL語句模板的命名占位符上
  9. $name = 'xjj';
  10. $alias = '小姐姐';
  11. $cate_id = 4;
  12. $stmt->bindParam('name', $name, PDO::PARAM_STR);
  13. $stmt->bindParam('alias', $alias, PDO::PARAM_STR);
  14. $stmt->bindParam('cate_id', $cate_id, PDO::PARAM_INT);
  15. // 5. 執(zhí)行SQL操作
  16. if ($stmt->execute()) {
  17. if ($stmt->rowCount() > 0) {
  18. echo '成功更新了' . $stmt->rowCount() . '條記錄';
  19. }
  20. } else {
  21. die('<pre>' . print_r($stmt->errorInfo(), true));
  22. }
  23. // 6. 銷毀pdo, 關(guān)閉連接
  24. $pdo = null; // unset($pdo) 等價

3.刪除數(shù)據(jù)
  1. # 刪除記錄
  2. // 1. 連接數(shù)據(jù)庫
  3. require __DIR__ . '/connect.php';
  4. // 2. 創(chuàng)建SQL語句模板
  5. $sql = 'DELETE FROM `category` WHERE `cate_id`=:cate_id';
  6. // 3. 創(chuàng)建SQL語句對象
  7. $stmt = $pdo->prepare($sql);
  8. // 4. 將變量綁定到SQL語句模板的命名占位符上
  9. $cate_id = 4;
  10. $stmt->bindParam('cate_id', $cate_id, PDO::PARAM_INT);
  11. // 5. 執(zhí)行SQL操作
  12. if ($stmt->execute()) {
  13. if ($stmt->rowCount() > 0) {
  14. echo '成功刪除了' . $stmt->rowCount() . '條記錄';
  15. }
  16. } else {
  17. die('<pre>' . print_r($stmt->errorInfo(), true));
  18. }
  19. // 6. 銷毀pdo, 關(guān)閉連接
  20. $pdo = null; // unset($pdo) 等價

4.查詢數(shù)據(jù)
  • 查詢1: fetch() + while()
  1. # 查詢1: fetch() + while()
  2. // 1. 連接數(shù)據(jù)庫
  3. require __DIR__ . '/connect.php';
  4. // 2. 創(chuàng)建SQL語句模板
  5. $sql = 'SELECT * FROM `movies` WHERE `cate_id` = :cate_id';
  6. // 3. 創(chuàng)建SQL語句對象
  7. $stmt = $pdo->prepare($sql);
  8. // 4. 將變量綁定到SQL語句模板的命名占位符上
  9. $cate_id = 1;
  10. $stmt->bindParam('cate_id', $cate_id, PDO::PARAM_INT);
  11. // 5. 執(zhí)行SQL操作
  12. $stmt->execute();
  13. // 遍歷
  14. while ($movie = $stmt->fetch(PDO::FETCH_ASSOC)) {
  15. echo '<pre>' . print_r($movie, true);
  16. }
  17. // 6. 銷毀pdo, 關(guān)閉連接
  18. $pdo = null; // unset($pdo) 等價

  • 查詢2: fetchAll()
  1. # 查詢2: fetchAll()
  2. // 1. 連接數(shù)據(jù)庫
  3. require __DIR__ . '/connect.php';
  4. // 2. 創(chuàng)建SQL語句模板
  5. $sql = 'SELECT * FROM `movies` WHERE `cate_id` = :cate_id';
  6. // 3. 創(chuàng)建SQL語句對象
  7. $stmt = $pdo->prepare($sql);
  8. // 4. 將變量綁定到SQL語句模板的命名占位符上
  9. $cate_id = 3;
  10. $stmt->bindParam('cate_id', $cate_id, PDO::PARAM_INT);
  11. // 5. 執(zhí)行SQL操作
  12. $stmt->execute();
  13. // 遍歷, 返回二維數(shù)組
  14. $movies = $stmt->fetchAll(PDO::FETCH_ASSOC);
  15. foreach ($movies as $movie) {
  16. echo '<pre>' . print_r($movie, true);
  17. }
  18. // 6. 銷毀pdo, 關(guān)閉連接
  19. $pdo = null; // unset($pdo) 等價
  • 查詢3: bindColumn()
  1. # 查詢3: bindColumn()
  2. // 1. 連接數(shù)據(jù)庫
  3. require __DIR__ . '/connect.php';
  4. // 2. 創(chuàng)建SQL語句模板
  5. $sql = 'SELECT * FROM `movies` WHERE `cate_id` = :cate_id';
  6. // 3. 創(chuàng)建SQL語句對象
  7. $stmt = $pdo->prepare($sql);
  8. // 4. 將變量綁定到SQL語句模板的命名占位符上
  9. $cate_id = 3;
  10. $stmt->bindParam('cate_id', $cate_id, PDO::PARAM_INT);
  11. // 5. 執(zhí)行SQL操作
  12. $stmt->execute();
  13. // 將結(jié)果集中的記錄中的字段, 綁定到指定的變量上
  14. $stmt->bindColumn('name', $name);
  15. $stmt->bindColumn('detail', $detail);
  16. while ($stmt->fetch(PDO::FETCH_ASSOC)) {
  17. $detail = mb_substr($detail,0, 20,'utf-8');
  18. echo '片名: ' . $name . '<br>' . '簡介: ' . $detail . '...<hr>';
  19. }
  20. // 6. 銷毀pdo, 關(guān)閉連接
  21. $pdo = null; // unset($pdo) 等價



批改老師:查無此人查無此人

批改狀態(tài):合格

老師批語:完成的不錯,繼續(xù)加油
本博文版權(quán)歸博主所有,轉(zhuǎn)載請注明地址!如有侵權(quán)、違法,請聯(lián)系admin@php.cn舉報處理!
全部評論 文明上網(wǎng)理性發(fā)言,請遵守新聞評論服務(wù)協(xié)議
0條評論
作者最新博文
關(guān)于我們 免責(zé)申明 意見反饋 講師合作 廣告合作 最新更新
php中文網(wǎng):公益在線php培訓(xùn),幫助PHP學(xué)習(xí)者快速成長!
關(guān)注服務(wù)號 技術(shù)交流群
PHP中文網(wǎng)訂閱號
每天精選資源文章推送
PHP中文網(wǎng)APP
隨時隨地碎片化學(xué)習(xí)
PHP中文網(wǎng)抖音號
發(fā)現(xiàn)有趣的

Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號

  • 登錄PHP中文網(wǎng),和優(yōu)秀的人一起學(xué)習(xí)!
    全站2000+教程免費學(xué)