PHP之PDO

  1 /*php之sql注入
  2 
  3 瀏覽器經過特殊的數據,影響了sql的執行,稱之爲sql注入。
  4     '# 註釋後邊的內容
  5     '--同上
  6     ' or 1 or ' 直接登陸
  7 
  8     字符轉義
  9     轉義函數:mysql擴展提供的函數:mysql_real_escape_string(轉義的數據)
 10     用於將參與到sql執行的數據,進行實施安全轉義。
 11 
 12     在數據庫操做層加入 用戶傳入的sql語句並加以過濾,在進行數據庫操做,以此防止用戶的不肯定性數據影響了sql的查詢。
 13 */
 14 
 15 /*
 16 PDO
 17 相似於,mysql的擴展。也是操做mysql服務器的方式。
 18 隨着php的發展,php認爲pdo纔是操做數據的合理方式。
 19 
 20 PDO:PHP DATA OBJECT
 21 基於面向對象語法完成操做。
 22 
 23 在使用pdo以前要在php.ini文件中開啓 extension=php_pdo_mysql.dll
 24 擴展開啓。 重啓服務器,就能夠在phpinfo.php中查詢是否開啓啦。
 25 
 26 
 27 建立一個數據庫鏈接的PDO實例
 28     PDO:__construct 建立一個表示數據庫鏈接實例
 29     PDO::__construct(string $dsn [,string $username [,string passowrd [,array options]]])    
 30 
 31     dsn:數據源名稱 data source name,包含了請求鏈接到數據庫的信息。。
 32     username 毋庸置疑 就是用戶名啦,
 33     password 密碼。
 34     driver_options 
 35         一個具體驅動的鏈接選項的鍵=>值 數組。
 36     返回值:成功則返回一個PDO對象。
 37     錯誤/異常
 38     若是試圖鏈接請求的數據庫失敗,則pdo::__construct拋出一個pdo異常(PDOException)    
 39 */
 40     <?php
 41         $dsn = 'mysql:host=127.0.0.1; port=3306; dbname=mytest';
 42         $username='root';
 43         $password='root';
 44         $options=array(
 45             //屬性初始化命令
 46             PDO::MYSQL_ATTR_INIT_COMMAND=>'SET NAMES utf8' //初始化數據庫編碼
 47         );
 48 
 49         //connect
 50         $pdo = new PDO($dsn, $username, $password, $options);
 51 
 52         $sql = "SELECT * FROM `article`";
 53         $result = $pdo->query($sql);  //$result 是一個結果集對象 object(PDOStatement)
 54 
 55         $sql = "DELETE FROM `article` WHERE `id` =1";
 56         //返回受影響的記錄
 57         $result = $pdo->exec($sql);
 58 
 59         $result->fecthAll(PDO::FETCH_ASSOC); //多條數據的查詢
 60         $result->fetch(); //單條記錄的查詢
 61         fetchColumn();  //獲取單個值查詢
 62 
 63         //當實例化完PDO對象,pdo就自動完成數據庫鏈接。
 64 /*
 65 執行sql(結構化查詢語言)        
 66         
 67         PDO對象的方法:
 68             結果集對象: query() ; 查詢類:select,show, desc
 69             受影響的記錄數:exec() ; 非查詢類:insert,update, delete,表操做,庫操做
 70 
 71             只要是執行失敗(sql出錯),都返回false    
 72 
 73 操做結果集對象
 74     爲了獲取最終的數據。使用結果集對象的方法來完成。
 75     獲取所有數據:
 76         二維數組:fetchAll()
 77         一維數組:fetch
 78         字符串數據:fetchColumn()
 79 
 80     能夠在fetchall和fetch中使用參數:
 81         PDO::FETCH_ASSOC ,PDO::FETCH_NUM , PDO::FETCH_BOTH的方式,
 82         獲取,關聯數組,索引數組,二者都。    
 83 
 84 PDO對象的經常使用方法
 85     $pdo->query();
 86     $pdo->exec();
 87     $pdo->errorCode();// 錯誤狀態碼
 88     $pdo->errorInfo();//錯誤信息 數組        
 89     執行失敗返回false
 90 
 91     具體的錯誤狀態碼查詢手冊
 92     $pdo->lastInsertID()  //獲取最新生成的auto_increnement()的字段值,最新更新的id
 93     $pdo->quote(); //轉義數據,並使用引號包裹。
 94     所以,在使用pdo執行sql時,應該使用上面的方法進行sql語句過濾,防止sql注入,
 95     sql-injection
 96 PDO事務處理
 97     $pdo->beginTransaction(); //開啓事務
 98     $pdo->rollback();   //事務回滾
 99     $pdo->commit();     //事務提交
100     $pdo->inTranaction();    //判斷是否處於事務中。
101 
102     */
相關文章
相關標籤/搜索