PEAR DB 初學筆記

 

一、數據查詢php

i. DB_common::getAll() DB_FETCHMODE_ORDERED 、 DB_FETCHMODE_ASSOC DB_FETCHMODE_OBJECThtml

ii. DB_common::getRow()mysql

iii. DB_common::getAssoc()sql

iv. DB_common::getCol()數據庫

v. DB_common::getOne()後端

  1 <!--
  2 PHP PEAR DB類部分函數說明:更多函數可參考pear/db.php和pear/db/common.php
  3 connect():數據庫連接函數
  4 query():SQL語句執行函數
  5 execute():SQL語句執行函數,與query()函數使用方式略有不一樣,具體可參考pear/db/common.php文件
  6 setFetchMode():設定返回記錄集是數字索引數組仍是關聯數組或者對象
  7 numRows():返回記錄集有多少行
  8 numCols():返回記錄集有多少列
  9 free():釋放記錄集
 10 disconnect():關閉數據庫連接
 11 affectedRows():操做影響的記錄行數
 12 isManip():判斷一個查詢是數據處理仍是數據定義操做
 13 
 14 -->
 15 
 16 <?php
 17 //引入PDB庫
 18 require_once("DB.php");
 19 //設定訪問的數據庫、登陸名、密碼、主機
 20 $userName = 'root';
 21 $password = 'a12345';
 22 $hostName = 'localhost';
 23 $dbName = 'db_chengxl';
 24 //設定DSN參數,並進行數據庫連接,我鏈接的數據庫爲Mysql
 25 $dsn = "mysql://$userName:$password@$hostName/$dbName";
 26 
 27 $dbCon = DB::connect($dsn);
 28 //錯誤處理
 29 if (DB::isError($dbCon)) {
 30     die ($dbCon->getMessage());
 31 }
 32 
 33 //建立數據表,並插入測試數據
 34 /*
 35 $sql = "CREATE TABLE cxl (" .
 36     "`id` INT( 11 ) UNSIGNED NOT NULL ," .
 37     "`name` VARCHAR( 30 ) CHARACTER SET gbk COLLATE gbk_chinese_ci NOT NULL ," .
 38     "`age` INT( 2 ) NOT NULL ," .
 39     "`birthday` VARCHAR( 30 ) CHARACTER SET gbk COLLATE gbk_chinese_ci NOT NULL ," .
 40     "`sex` INT( 1 ) NOT NULL ," .
 41     "PRIMARY KEY (  `id` )" .
 42     ") ENGINE = MYISAM CHARACTER SET gbk COLLATE gbk_chinese_ci";
 43 
 44 $result = $dbCon->query($sql);
 45 
 46 if (DB::isError($result)) {
 47     die ($result->getMessage());
 48 
 49 }
 50 
 51 $sql = "insert into cxl(id,name,age,birthday,sex) values(1,'cxl',1,'2009-05-13',1),(2,'cxl',1,'2009-05-13',1),(3,'cxl',1,'2009-05-13',1)";
 52 
 53 $result = $dbCon->query($sql);
 54 
 55 if (DB::isError($result)) {
 56     die ($result->getMessage());
 57 }*/
 58 
 59 
 60 //setFetchMode函數是PHP PEAR DB讓用戶設定返回記錄集是數字索引數組仍是關聯數組或者對象,
 61 //此處我設定爲關聯數組的形式。默認DB_FETCHMODE_ORDERED模式,
 62 //其餘兩種模式爲DB_FETCHMODE_ASSOC與DB_FETCHMODE_OBJECT
 63 
 64 //獲取數據
 65 /*
 66 $dbCon->setFetchMode(DB_FETCHMODE_ASSOC);
 67 
 68 $sql = "select * from cxl";
 69 
 70 $result = $dbCon->query($sql);
 71 
 72 
 73 if (DB::isError($result)) {
 74     die ($result->getMessage());
 75 }
 76 
 77 for ($i = 0; $i < $result->numRows(); $i++) {
 78     $info = &$result->fetchRow();
 79 
 80     echo "name:" . $info['name'];
 81     echo "birthday:" . $info['birthday'] . "<br>";
 82 }
 83 */
 84 
 85 
 86 
 87 //總數
 88 /*
 89  * $colCount = $result->numCols();
 90  * echo "<tr><td colspan=\"".$colCount."\">共找到".$result->numRows()."位用戶</td></tr>";
 91 */
 92 
 93 
 94 //function &getOne($query, $params = array())
 95 //執行查詢,並返回結果集中第一行第一列的數據。$params是參數值,若是後端數據庫支持,將調用prepare/execute來使用這些參數。
 96 
 97 /*
 98 $sql = "select * from cxl";
 99 $last = $dbCon->getOne($sql);
100 if(DB::isError($last)){
101     echo "出錯:".DB::errorMessage($last);
102 }
103 echo "id:".$last;*/
104 
105 //function &getAll($query, $fetchmode = DB_FETCHMODE_DEFAULT, $params = array())
106 //返回包含結果集中所有記錄的數組。注意,若是你的結果集很大,不要使用這個函數。
107 /*
108   $sql ="select * from cxl limit 1000";
109   $list = $dbCon->getAll($sql);
110   if(DB::isError($list)){
111       die( "數據庫錯誤:".DB::errorMessage($list));
112   }
113   for ($i=0;$i<count($list);$i++){
114       $user = $list[$i];
115       echo "<tr>";
116       for($j=0;$j<count($user);$j++){
117           echo "<td>".$user[$j]."</td>";
118       }
119       echo "</tr>";
120   }
121 */
122 
123 
124 //function &getCol($query, $col = 0, $params = array())
125 //執行查詢,並返回包含結果集中指定字段列的值的數組。
126 //$col是要返回的列的索引,能夠是整數,或者是關鍵字段名。
127 /*$sql = "select id ,age,name from cxl order by age desc limit 100";
128 $row = $dbCon->getCol($sql,1);
129 if(DB::isError($row)){
130     echo "出錯:".DB::errorMessage($row);
131 }
132 for($i=0;$i<count($row);$i++){
133     echo "<tr>$row[$i]</tr>";
134 }*/
135 
136 
137 //function &getRow($query, $fetchmode = DB_FETCHMODE_DEFAULT, $params = array())
138 //執行查詢,請返回結果集的第一條記錄。
139 //$fetchmod 指定fetch模式,若是省略,使用缺省模式。
140 
141 /*
142 $sql = "select * from cxl order by id desc";
143 $row = $dbCon->getRow($sql);
144 if(DB::isError($row)){
145     echo "出錯:".DB::errorMessage($row);
146 }
147 for($i=0;$i<count($row);$i++){
148     echo "<td>$row[$i]</td>";
149 }
150 */
151 
152 
153 //function &getAssoc($query, $force_array = false, $params = array())
154 //執行查詢,並返回一個關聯數組。
155 //$force_arry 強制返回數組。若是true,那麼即便你的結果集裏只有2個字段,那麼關鍵字段對應的值也是一個只有一個元素的
156 //數組。若是false,那麼關鍵字段對應的值是一個標量了。
157 /*
158 $sql = "select id,name,age from cxl limit 100";
159  $userinfo = $dbCon->getAssoc($sql);
160 if (DB::isError($userinfo)) {
161     die("錯誤!" . DB::errorMessage($userinfo));
162 }
163 //var_dump($userinfo);
164 if (empty($userinfo)) {
165     echo "warning:NO users!";
166     return;
167 
168 }
169 
170     $info = $userinfo['2'];
171     if (empty($info)) {
172         echo "沒有這個用戶信息!";
173     }
174     print_r($info);
175     //var_dump($info);
176 */
177 
178 
179 
180 //自動增加(Sequences)
181 //Sequences 爲數據行提供獨一無二的ID標識。若是熟悉MySQL之類的話,能夠把它想象爲AUTO_INCREMENT.它很是簡單,
182 //首先你獲取一個ID,而後在這個ID所在的行插入你所須要記錄的數據。能夠爲你的表設置更多的Sequences,
183 //只須要保證在任何特殊的表中都使用同樣的sequence就行。
184 
185 // Get an ID (if the sequence doesn't exist, it will be created)
186 $id = $dbCon->nextId(cxl);
187 $sql = "insert into cxl(id,name,age,birthday,sex) values($id,'cxl',1,'2009-05-13',1)";
188 
189 // Use the ID in your INSERT query
190  //$res = $dbCon->query("INSERT INTO cxl (id,name) VALUES ($id,'foo')");
191  $res = $dbCon->query($sql);
192 if(DB::isError($res)){
193     echo "出錯:".DB::errorMessage($res);
194 }
195 
196 echo "<tr><td>當前插入數據的ID:$id</td></tr>";
197 
198 
199 
200 //釋放
201 $result->free();
202 //關閉鏈接
203 $dbCon->disconnect();
204 
205 ?>

 二、數據插入、更新:autoExecute()數組

 1 <?php
 2 //引入PDB庫
 3 require_once("DB.php");
 4 //設定訪問的數據庫、登陸名、密碼、主機
 5 $db = &DB::connect('mysql://root:a12345@localhost/db_chengxl');
 6 //錯誤處理
 7 if (DB::isError($db)) {
 8     die ($db->getMessage());
 9 }
10 $table_name = 'user';
11 
12 //插入的數據
13 $fields_values = array(
14     'id' => '1',
15     'name' => 'Darlin',
16     'country' => 'Acewill',
17 );
18 //修改的數據
19 $fields1_values = array(
20    // 'id' => '1',
21    // 'name' => 'Darlin',
22     'country' => 'ACEWILL'//這裏填寫但願修改後的數據,
23 );
24 //Using autoExecute() in insert mode
25 //$res = $db->autoExecute($table_name, $fields_values, DB_AUTOQUERY_INSERT);
26 
27 //Using autoExecute() in update mode
28 $res = $db->autoExecute($table_name, $fields1_values, DB_AUTOQUERY_UPDATE);
29 
30 //用這個方法沒有效果
31 //$res = $db->autoExecute($table_name, $fields_values, DB_AUTOQUERY_UPDATE, "country = 'Japan'");
32 if (PEAR::isError($res)) {
33     die($res->getMessage());
34 } else {
35     echo "操做成功!</br>";
36 }
37 
38 ?>

 

以上資料均來源網絡,網絡

PHP PEAR DB類安裝與使用實例詳解:http://www.alixixi.com/program/a/2011101775410.shtml函數

PEAR:建立中間的數據庫應用層1:http://www.alixixi.com/program/a/2008020831340.shtml測試

PEAR:建立中間的數據庫應用層2:http://www.alixixi.com/program/a/2008020831341.shtml

相關文章
相關標籤/搜索