常用的ADODB使用方法

PHP代码
  1. <?php   
  2. /*  
  3. 常用的ADODB使用方法  
  4. 作者:飞豹游侠 整理:淡水河边  
  5. */  
  6. //定义数据库变量   
  7. $DB_TYPE     = "mysql";   
  8. $DB_HOST     = "localhost";   
  9. $DB_USER     = "root";   
  10. $DB_PASS     = "";   
  11. $DB_DATABASE = "ai-part";   
  12. require_once("../adodb/adodb.inc.php");   
  13. $db = NewADOConnection("$DB_TYPE");//建立数据库对象   
  14. $db->debug = true;//数据库的DEBUG测试,默认值是false   
  15. $ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;//返回的记录集形式,关联形式   
  16. /***  
  17. 返回的记录集形式  
  18. define('ADODB_FETCH_DEFAULT',0);  
  19. define('ADODB_FETCH_NUM',1);  
  20. define('ADODB_FETCH_ASSOC',2);  
  21. define('ADODB_FETCH_BOTH',3);   
  22. 以上常量,在adodb.inc.php里定义了,也就是可用"$ADODB_FETCH_MODE=2"方式  
  23. ADODB_FETCH_NUM   返回的记录集中的索引,是数字形式,即数据库字段的排序顺序值  
  24. ADODB_FETCH_ASSOC 返回的记录集中的索引,是原数据库字段名  
  25. ADODB_FETCH_BOTH 和 ADODB_FETCH_DEFAULT 是同时返回以上两种。某些数据库不支持  
  26. An example:   
  27.     $ADODB_FETCH_MODE = ADODB_FETCH_NUM;   
  28.     $rs1 = $db->Execute('select * from table');   
  29.     $ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;   
  30.     $rs2 = $db->Execute('select * from table');   
  31.     print_r($rs1->fields); # 返回的数组是: array([0]=>'v0',[1] =>'v1')   
  32.     print_r($rs2->fields); # 返回的数组是: array(['col1']=>'v0',['col2'] =>'v1')   
  33. ***/  
  34.   
  35. //连接数据库,方法有Connect,PConnect,NConnect,一般使用Connect   
  36. if (!@$db->Connect("$DB_HOST""$DB_USER""$DB_PASS""$DB_DATABASE")) {   
  37.     exit('<a href="/">服务器忙,请稍候再访问</a>');   
  38. }   
  39.   
  40. /*  
  41. $db->  $rs-> 此类的使用方法  
  42. Execute($sql),执行参数中的$sql语句  
  43. SelectLimit($sql,$numrows=-1,$offset=-1) $numrows:取几条记录,$offset,从第几条开始取,一般是用于分页,或只取出几条记录的时候用  
  44. */  
  45. //Example: 取出多个记录   
  46. $sql = "Select * FROM table orDER BY id DESC";   
  47. if (!$rs = $db->Execute($sql)) {//执行SQL语句,并把结果返回给$rs变量   
  48.     echo $db->ErrorMsg();//这个是打印出错信息   
  49.     $db->Close();//关闭数据库   
  50.     exit();   
  51. }   
  52. while (!$rs->EOF) {//遍历记录集   
  53.     echo $rs->fields['username'] . '<br>';   
  54.       //print_r($rs->fields)试试,$rs->fields['字段名'],返回的是这个字段里的值   
  55.     $rs->MoveNext();//将指针指到下一条记录,否则出现死循环!   
  56. }   
  57. $rs->Close();//关闭以便释放内存   
  58.   
  59. //插入新记录   
  60. $sql = "Insert table (user_type,username) VALUES (3, 'liucheng')";   
  61. $db->Execute($sql);   
  62.   
  63. //更新记录   
  64. $sql = "Update table SET user_type=3 Where id=2";   
  65. $db->Execute($sql);   
  66.   
  67. //删除记录   
  68. $sql = "Delete FROM table Where id=2";   
  69. $db->Execute($sql);   
  70.   
  71. // 取单个记录   
  72. //$db->GetRow($sql), 取第一条记录,并返回一个数组,出错返回false   
  73. $sql = "Select username,password,user_type FROM table Where id=3";   
  74. $data_ary = $db->GetRow($sql);   
  75. if ($data_ary == false) {   
  76.     echo '没有找到此记录';   
  77.     exit();   
  78. else {   
  79.     echo $data_ary['username'] . ' ' . $data_ary['password'] . ' ' . $data_ary['user_type'] . '<br>';   
  80. }   
  81.   
  82. //另一种方法   
  83. $sql = "Select username,password,user_type FROM table Where id=3";   
  84. if (!$rs = $db->Execute($sql)) {   
  85.     echo $db->ErrorMsg();   
  86.     $db->Close();   
  87.     exit();   
  88. }   
  89. if (!$result = $rs->FetchRow()) {   
  90.     echo '没有找到此记录';   
  91.     exit();   
  92. else {   
  93.     echo $result['username'] . ' ' . $result['password'] . ' ' . $result['user_type'] . '<br>';   
  94. }   
  95.   
  96. // 取单个字段   
  97. //$db->GetOne($sql) 取出第一条记录的第一个字段的值,出错则返回false   
  98. $sql = "Select COUNT(id) FROM table";   
  99. $record_nums = $db->GetOne($sql);   
  100. echo $record_nums;   
  101. $sql = "Select username,password,user_type FROM table Where user_id=1";   
  102. $result = $db->GetOne($sql);   
  103. echo $result;//打印出username的值   
  104. /*  
  105. 在进行添加,修改,删除记录操作时,  
  106. 要对字符串型的字段,使用$db->qstr()对用户输入的字符进行处理,  
  107. 对数字型字段,要进行数据判断  
  108. 更新记录,注意:这是针对php.ini中,magic_quotes被设置为Off的情况,如果不确定,可以使用  
  109. $db->qstr($content,get_magic_quotes_gpc())  
  110. 注意:content= 等号右边,没有单引号  
  111. */  
  112. $sql = "Update table SET content=" . $db->qstr($content) . " Where id=2";   
  113. $db->Execute($sql);   
  114.   
  115.   
  116. /*$db->Insert_ID(),无参数,返回刚刚插入的那条记录的ID值,仅支持部分数据库,带auto-increment功能的数据库,如PostgreSQL, MySQL 和 MS SQL   
  117. */  
  118. //Example:   
  119. $sql = "Insert table (user_type,username) VALUES (3, 'liucheng')";   
  120. $db->Execute($sql);   
  121. $data_id = $db->Insert_ID();   
  122. echo $data_id;   
  123.   
  124. /*$db->GenID($seqName = 'adodbseq',$startID=1),产生一个ID值.$seqName:用于产生此ID的数据库表名,$startID:起始值,一般不用设置,它会把$seqName中的值自动加1.支持部分数据库,某些数据库不支持  
  125.  
  126. Insert_ID,GenID,一般我用GenID,使用它的目的,是在插入记录后,要马上得到它的ID时,才用  
  127. */  
  128. /*Example:  
  129. 先创建一个列名为user_id_seq的表,里面只有一个字段,id,int(10),NOT NULL,然后插入一条值为0的记录  
  130. */  
  131. $user_id = $db->GenID('user_id_seq');   
  132. $sql = "Insert table (id, user_type,username) VALUES (" . $user_id . ", 3, 'liucheng')";   
  133. $db->Execute($sql);   
  134.   
  135. /*  
  136. $rs->RecordCount(),取出记录集总数,无参数  
  137. 它好像是把取出的记录集,用count()数组的方法,取得数据的数量  
  138. 如果取大量数据,效率比较慢,建议使用SQL里的COUNT(*)的方法  
  139. $sql = "Select COUNT(*) FROM table", 用此方法时,不要在SQL里加ORDER BY,那样会降低执行速度  
  140.  
  141. Example:  
  142. */  
  143. $sql = "Select * FROM table orDER BY id DESC";   
  144. if (!$rs = $db->Execute($sql)) {   
  145.     echo $db->ErrorMsg();   
  146.     $db->Close();   
  147.     exit();   
  148. }   
  149. $record_nums = $rs->RecordCount();   
  150.   
  151. /*  
  152. 如果想对某一结果集,要进行两次同样的循环处理,可以用下面方法  
  153. 以下,只是一个例子,只为说明$rs->MoveFirst()的使用方法  
  154. */  
  155. $sql = "Select * FROM table orDER BY id DESC";   
  156. if (!$rs = $db->Execute($sql)) {   
  157.     echo $db->ErrorMsg();   
  158.     $db->Close();   
  159.     exit();   
  160. }   
  161. $username_ary = array();   
  162. while (!$rs->EOF) {   
  163.     $username_ary[] = $rs->fields['username']   
  164.     echo $rs->fields['username'] . '<br>';//print_r($rs->fields)试试,$rs->fields['字段名'],返回的是这个字段里的值   
  165.     $rs->MoveNext();//将指针指到下一条记录,不用的话,会出现死循环!   
  166. }   
  167. $username_ary = array_unique($username_ary);   
  168.   
  169. $rs->MoveFirst();//将指针指回第一条记录   
  170. while (!$rs->EOF) {   
  171.     echo $rs->fields['password'] . '<br>';//print_r($rs->fields)试试,$rs->fields['字段名'],返回的是这个字段里的值   
  172.     $rs->MoveNext();//将指针指到下一条记录   
  173. }   
  174. $rs->Close();   
  175.   
  176. //当本页程序,对数据库的操作完毕后,要$db->Close();   
  177. $db->Close();   
  178.   
  179. /*一个不错的方法 */  
  180. if (isset($db)) {   
  181.     $db->Close();   
  182. }   
  183. ?>  

Tags: adodb

« 上一篇 | 下一篇 »

只显示10条记录相关文章

Adodb 的 GetInsertSQL 和 GetUpdateSQL以及AutoExecute (浏览: 1037, 评论: 0)
php使用ADODB实现session共享 (浏览: 958, 评论: 0)
在tinybutstrong中使用adodb (浏览: 872, 评论: 0)
采用utf8编码彻底解决php乱码问题 (浏览: 1828, 评论: 0)
关于php中使用adodb的效率问题 (浏览: 1168, 评论: 0)
php5使用ADODB打开ac出错(空白)的解决方法 (浏览: 1826, 评论: 2)
使用adodb(php)连接数据库出现乱码的解决 (浏览: 1432, 评论: 0)
Smarttemplate的嵌套循环 (浏览: 1325, 评论: 0)
ADODB学习手册 (浏览: 1713, 评论: 0)
Adodb的ACCESS库自定义分页 (浏览: 1500, 评论: 0)

Trackbacks

点击获得Trackback地址,Encode: UTF-8 点击获得Trackback地址,Encode: GB2312 or GBK 点击获得Trackback地址,Encode: BIG5

发表评论

评论内容 (必填):