2009-04-26 17:40

[PHP] PDO 資料庫操作方法(快速範例)

  1. <?php 
  2.  
  3. /*--[PDO::query]-----------------------------------*/ 
  4. // 建立查詢連結 
  5. $stmt = $DB_Link->query(sprintf(" 
  6.    SELECT id, colour FROM test_table WHERE name=%s 
  7. ",$name)); 
  8.  
  9. // 設定查詢結果的資料格式,之後可以省去 fetch 時的格式設定 
  10. $stmt->->setFetchMode(PDO::FETCH_ASSOC); 
  11.  
  12. // 取得查詢結果的列數 
  13. $count = $stmt->rowCount (); 
  14. /* PDOStatement::rowCount()主要是用於 PDO::query()和PDO::prepare()進行DELETE、INSERT、UPDATE操作影響的結果集,對PDO::exec()方法 和SELECT操作無效。 */ 
  15.  
  16. // 取得一列的查詢結果 
  17. $row = $stmt->fetch(PDO::FETCH_ASSOC); 
  18.  
  19. // 利用迴圈對每一列做處理 
  20. $dataArray = array(); // 結果儲存陣列 
  21. while ($row = $stmt->fetch(PDO::FETCH_ASSOC) { 
  22.    // 資料處理 
  23.    $row['colour'] = $row['colour']? $row['colour'] : '#000'; 
  24.    // 加儲存陣列 
  25.    array_push($dataArray,$row); 
  26. } 
  27.  
  28. // 取得一列單一欄位的查詢結果 
  29. $column = $stmt->fetchColumn(); // id 
  30. $column = $stmt->fetchColumn(1); // colour 
  31. /* 當查詢結果之有一個時很好用(SELECT COUNT(*) FROM test_table) */ 
  32.  
  33. // 取得所有的查詢結果列 
  34. $dataArray = $stmt->fetchAll (PDO::FETCH_ASSOC); 
  35.  
  36.  
  37. /* PDO::fetch , PDO::fetchAll 選項參數 
  38. PDO::FETCH_LAZY 
  39.    將每一行結果作為一個對象返回 
  40.  
  41. PDO::FETCH_ASSOC 
  42.    僅返回以鍵值作為下標的查詢的結果集,名稱相同的數據只返回一個 
  43.  
  44. PDO::FETCH_NAMED 
  45.    僅返回以鍵值作為下標的查詢的結果集,名稱相同的數據以數組形式返回 
  46.  
  47. PDO::FETCH_NUM 
  48.    僅返回以數字作為下標的查詢的結果集 
  49.  
  50. PDO::FETCH_BOTH 
  51.    同時返回以鍵值和數字作為下標的查詢的結果集(預設) 
  52.  
  53. PDO::FETCH_OBJ 
  54.    按照對象的形式,類似於以前的 mysql_fetch_object() 
  55.  
  56. PDO::FETCH_BOUND 
  57.    將PDOStatement::bindParam()和PDOStatement::bindColumn()所綁定的值作為變量名賦值後返回 
  58.  
  59. PDO::FETCH_COLUMN 
  60.    將返回結果每一列全部集中在一個欄位 
  61.  
  62. PDO::FETCH_CLASS 
  63.    以 Class 的形式返回結果集 
  64.  
  65. PDO::FETCH_INTO 
  66.    將數據合併入一個存在的類中進行返回 
  67.  
  68. PDO::FETCH_FUNC 
  69. PDO::FETCH_GROUP 
  70. PDO::FETCH_UNIQUE 
  71. PDO::FETCH_KEY_PAIR 
  72.    以首個鍵值下表,後面數字下表的形式返回結果集 
  73.  
  74. PDO::FETCH_CLASSTYPE 
  75. PDO::FETCH_SERIALIZE 
  76.    表示將數據合併入一個存在的類中并序列化返回 
  77.  
  78. PDO::FETCH_PROPS_LATE 
  79.    Available since PHP 5.2.0 
  80. */ 
  81.  
  82.  
  83.  
  84. /*--[PDO::exec]-----------------------------------*/ 
  85. $colour="'red'"; 
  86.  
  87. // 建立新增請求 
  88. $count = $DB_Link->exec(sprintf(" 
  89.    INSERT INTO test_table(colour) VALUES(%s) 
  90. ",$colour)); 
  91. // 取得上次 Insert 時產生的 AUTO_INCREMENT Id 
  92. $id = $DB_Link->lastInsertId(); 
  93.  
  94. // 建立更新請求 
  95. $count = $DB_Link->exec(sprintf(" 
  96.    UPDATE test_table SET colour = %s WHERE id=1 
  97. ",$colour)); 
  98.  
  99. // 建立刪除請求 
  100. $count = $DB_Link->exec(sprintf(" 
  101.    DELETE FROM test_table WHERE colour = %s LIMIT 10 
  102. ",$colour)); 
  103. /* 
  104.  PDO::exec 會回傳所影響的列數 
  105.  但如果 DELETE 到資料表為空時將回傳 0,而不是所刪除的列數 
  106. */ 


參考來源:
PHP: PDO::lastInsertId - Manual
PHP: PDOStatement->fetchColumn - Manual
PHP: PDO::exec - Manual
PHP: PDO::query - Manual

PDO (PHP Data Object) 簡易教學 @ wEd2.5
PHP的PDO类教程_PHP技巧
pdo使用简例 - 板子博客

0 回應: