zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Javascript高级篇-Function对象
    Object类、instanceof
    [一]Head First设计模式之【策略模式】(鸭子设计的优化历程)
    匿名内部类
    设计模式之单例模式
    长江商业评论读书笔记
    [转]Freemarker数据类型转换
    面向对象编程——概论(一)
    IP地址处理模块IPy
    系统性能模块psutil
  • 原文地址:https://www.cnblogs.com/Darlin356230410/p/4969754.html
Copyright © 2011-2022 走看看