PEAR DB 初学笔记

 

1、数据查询

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

ii. DB_common::getRow()

iii. DB_common::getAssoc()

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 ?>

 2、数据插入、更新: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

posted @ 2015-11-16 18:52  D-Arlin  阅读(489)  评论(0编辑  收藏  举报