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

搜索
博主信息
博文 98
粉絲 1
評論 0
訪問量 82876
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板
數(shù)據(jù)庫的CURD操作、PDO本質(zhì)與原理的學習
阿杰
原創(chuàng)
1029人瀏覽過

一、數(shù)據(jù)庫的CURD操作

  • 操作簡稱:CURD,增刪改查、它代表創(chuàng)建(Create)、更新(Update)、讀?。≧etrieve)和刪除(Delete)操作。

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

  1. <?php
  2. namespace pdo_deu;
  3. return [
  4. // dsn
  5. 'type' => 'mysql',
  6. 'host' => '127.0.0.1',
  7. 'dbname' => 'mydb',
  8. 'port' => '3306',
  9. 'charset' => 'utf8',
  10. // username
  11. 'username' => 'myshop',
  12. 'password' => 'yzj123',
  13. ];
  1. <?php
  2. namespace pdo_deu;
  3. use PDO;
  4. $dbConfig = require 'database.php';
  5. extract($dbConfig); //extract()提取參數(shù) 將關(guān)聯(lián)數(shù)組中的每一個成員,打散成獨立變量
  6. // printf('<pre>%s</pre>',print_r($dbConfig,true));
  7. // 1. dsn
  8. $tpl = '%s:host=%s;dbname=%s;port=%s;charset=%s';
  9. $args = [$type,$host,$dbname,$port,$charset];
  10. $dsn = sprintf($tpl,...$args);
  11. // echo $dsn;
  12. // 2. 創(chuàng)建數(shù)據(jù)對象
  13. $db = new PDO($dsn, $username, $password);
  14. // var_dump($db);
  15. if($db){
  16. echo '數(shù)據(jù)庫連接成功!';
  17. }
  18. // 設(shè)置結(jié)果集的默認獲取模式:只要關(guān)聯(lián)部分
  19. $db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);

1、CURD: INSERT 插入數(shù)據(jù)

  1. <?php
  2. namespace php_edu;
  3. // 1、連接數(shù)據(jù)庫
  4. require __DIR__ .'/config/connect.php';
  5. $sql = 'INSERT `staff` SET `name` = ?, `sex` = ?, `email` = ?';
  6. $stmt = $db->prepare($sql);
  7. //2、執(zhí)行SQL語句
  8. $stmt->execute(['小龍女', 1, 'xiaolongnv@php.cn']);
  9. $stmt->execute(['洪七公', 0, 'hongqigong@php.cn']);
  10. $stmt->execute(['黃蓉', 0, 'huangrong@php.cn']);
  11. // 成功
  12. if($stmt->rowCount() > 0){
  13. echo '新增成功,新增記錄的主鍵ID = ' . $db->lastInsertId();
  14. }else{
  15. echo '新增失敗';
  16. print_r($stmt->errorInfo());
  17. }

2、CURD: UPDATE

  1. <?php
  2. namespace php_deu;
  3. // 1、連接數(shù)據(jù)庫
  4. require __DIR__ .'/config/connect.php';
  5. // 2.CURD: UPDATE 更新
  6. // UPDATE 表名 SET 字段1=值1 ... WHERE 更新條件
  7. $sql = 'UPDATE `staff` SET `name` = ? WHERE `id` = ?';
  8. $stmt = $db->prepare($sql);
  9. $stmt->execute(['黃蓉2',3]);
  10. if($stmt->rowCount() > 0){
  11. echo '更新成功';
  12. } else {
  13. echo '更新失敗';
  14. print_r($stmt->errorInfo());
  15. }

3、CURD: DELETE

  1. <?php
  2. namespace php_edu;
  3. // 1、連接數(shù)據(jù)庫
  4. require __DIR__.'/config/connect.php';
  5. // 2、CURD:DELETE 刪除
  6. // DELETE FROM 表名 SET 字段1=值1 ... WHERE 更新條件
  7. // $sql = 'DELETE FROM `staff` WHERE `id` = ?';
  8. // '?' :匿名占位符
  9. // 'string': 命名占位符
  10. $sql = 'DELETE FROM `staff` WHERE `id` = :id';
  11. $stmt = $db->prepare($sql);
  12. $stmt->execute([':id' => $_GET['id']]);
  13. // 如果條件來自外部,例如url中g(shù)et參數(shù)
  14. echo $_GET['id'];
  15. if($stmt->rowCount() > 0){
  16. echo 'id = '.$_GET['id'].' 刪除成功';
  17. }else{
  18. echo '刪除失敗<hr>';
  19. print_r($stmt->errorInfo());
  20. }

4、CURD: SELECT
(1)單條查詢

  1. <?php
  2. namespace php_edu;
  3. use PDO;
  4. // 1.連接數(shù)據(jù)庫
  5. require __DIR__.'/config/connect.php';
  6. // 2. CURD: SELECT 單條查詢
  7. // SELECT 字段列表 FROM 表名 WHERE 查詢條件
  8. $sql = 'SELECT `id`,`name` FROM `staff` WHERE `id` > :id';
  9. $stmt = $db->prepare($sql);
  10. $stmt->execute(['id'=>0]);
  11. // 單條查詢
  12. // $staff = $stmt->fetch(PDO::FETCH_ASSOC);
  13. // printf('<pre>%s</pre>',print_r($staff,true));
  14. // PDO::FETCH_ASSOC:結(jié)果集獲取模式,只返回關(guān)聯(lián)部分
  15. while($staff = $stmt->fetch()){
  16. printf('<pre>%s</pre>',print_r($staff,true));
  17. }

(2)多條查詢

  1. <?php
  2. namespace php_edu;
  3. use PDO;
  4. // 1.連接數(shù)據(jù)庫
  5. require __DIR__ .'/config/connect.php';
  6. // 2.CURD: SELECT 多條查詢
  7. // SELECT 字段列表 FROM 表名 WHERE 查詢條件
  8. $sql = 'SELECT `id`,`name` FROM `staff` WHERE `id` > :id';
  9. $stmt = $db->prepare($sql);
  10. $stmt->execute(['id' => 1]);
  11. // fetchAll: 返回全部滿足條件的記錄集合,二維數(shù)組
  12. $staffs = $stmt->fetchAll();
  13. // print_r($staffs);
  14. printf('<pre>%s</pre>',print_r($staffs,true));
  15. foreach($staffs as $staff){
  16. printf('<pre>%s</pre>',print_r($staff,true));
  17. }

二、PDO

(1)為什么要用預處理(語句被執(zhí)行前進行一些處理)

  • 1、防止SQL注入攻擊

  • 2、數(shù)據(jù)延遲綁定

  • 3、編程時只寫SQL語句模板,執(zhí)行SQL時再給占位符綁定真實數(shù)據(jù)

(2)預處理過程

  • 1、創(chuàng)建SQL語句模板對象:數(shù)據(jù)使用占位符表示
  • 2、執(zhí)行SQL語句,根據(jù)操作類型(寫/讀),讀返回結(jié)果集/數(shù)組,寫返回受影響的記錄數(shù)量
批改老師:PHPzPHPz

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

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

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

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