時間:2020-10-30
瀏覽量:
1、什么是PDO?
php data object ,php數據對象,PHP 數據對象 (PDO) 擴展為PHP操作多種數據庫定義了一個輕量級的一致接口。實現 PDO 接口的每個數據庫驅動可以公開具體數據庫的特性作為標準擴展功能。 注意利用 PDO 擴展自身并不能實現任何數據庫功能;必須使用一個 具體數據庫的 PDO 驅動 來訪問數據庫服務。
PDO 提供了一個 數據訪問 抽象層,這意味著,不管使用哪種數據庫,都可以用相同的函數(方法)來查詢和獲取數據。 PDO 不提供 數據庫 抽象層;它不會重寫 SQL,也不會模擬缺失的特性。如果需要的話,應該使用一個成熟的抽象層。
2、為什么要使用PDO?
更換其他數據庫的時候無需更換代碼,提高了程序運行效率
3、PDO的特點是什么?
(1)、編碼的一致性
(2)、靈活性
(3)、面向對象特性
(4)、高性能
使用PDO的好處是:從根本上防止SQL注入
4、如何使用PDO?
修改 php.ini中的配置 添加MYSQL的PDO擴展
(1) extension=php_pdo_mysql.dll 去前面的分號
(2) 擴展目錄中要有相應的擴展文件
(3) PDO連接不同的數據庫,要有不同的數據庫驅動文件即我們所加入配置文件的擴展
(4) 重新啟動Apache使配置生效
使用PDO連接Mysql數據庫實例:
<?php header("content-type:text/html;charset=utf-8"); define('DB_TYPE','mysql');//定義數據庫類型常量 define('DB_HOST','127.0.0.1');//定義主機地址常量 define('DB_PORT','3306');//定義連接數據庫端口號常量 define('DB_CHARSET','utf8');//定義數據庫字符集常量 define('DB_USER','root');//定義數據庫連接用戶名常量 define('DB_PASS','root');//定義數據庫連接密碼常量 define('DB_NAME','test');//定義數據庫名稱常量 define('DB_DSN',DB_TYPE.':host='.DB_HOST.';port='.DB_PORT.';dbname='.DB_NAME.';charset='.DB_CHARSET);//定義DSN常量 try{ $pdo = new PDO(DB_DSN,DB_USER,DB_PASS,[PDO::ATTR_ERRMODE=>PDO::ERRMODE_WARNING]); //設置sql語句查詢如果出現問題 就會拋出異常如下單獨設置也可以 //$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); }catch(Exception $e){ echo $e->getMessage(); }catch(Throwable $e){ echo $e->getMessage(); } //查詢數據 $state = $pdo->query("select * from admin_user where id = 1"); //query執行一條SQL語句,如果通過,則返回一個PDOStatement對象,可以直接遍歷這個返回的記錄集 (query用于select) $res = $state->fetch(PDO::FETCH_ASSOC); // 獲取結果集中的一行數據 $res = $state->fetchAll(PDO::FETCH_ASSOC); //獲取結果集中的所有數據 //添加數據 $row1 = $pdo->exec("insert into admin_user(user_name, password) values('jack', 'adsfadf')"); //exec主要執行沒有返回結果集的操作 PDO::exec執行一條SQL語句, //并返回受影響的行數。此函數不會返回結果集合.。 //(exec用于insert、delete、update) //修改數據 $row2 = $pdo->exec("update admin_user set user_name = 'peter' where user_id = 50"); //刪除數據 $row3 = $pdo->exec("delete from admin_user where user_id = 50"); var_dump($res,$row1,$row2,$row3); //預處理(防止SQL注入) $state = $pdo->prepare("select * from tp_admin_user where user_id = ?"); $state->execute([2]); //綁定參數 $row = $state->fetch(PDO::FETCH_ASSOC); // 獲取結果集中的一條 $rows = $state->fetchAll(PDO::FETCH_ASSOC); // 獲取結果集中的所有 echo "<pre>"; var_dump($rows); ?>
RELATED RECOMMEND