<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://jackxiang.com/post//</link>
<title><![CDATA[常用的adodb使用方法,学习资料]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[生活笔记]]></category>
<pubDate>Thu, 03 Jul 2008 03:44:23 +0000</pubDate> 
<guid>http://jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	&lt;?php<br/>/*<br/>常用的ADODB使用方法<br/>整理:飞豹游侠 QQ:8527385 E-mail:liuchengcn # 163.com<br/>如有错误之处,敬请谅解,并QQ或E-mail通知我,谢谢<br/>*/<br/>//定义数据库变量<br/>$DB_TYPE&nbsp;&nbsp;&nbsp;&nbsp; = &quot;mysql&quot;;<br/>$DB_HOST&nbsp;&nbsp;&nbsp;&nbsp; = &quot;localhost&quot;;<br/>$DB_USER&nbsp;&nbsp;&nbsp;&nbsp; = &quot;root&quot;;<br/>$DB_PASS&nbsp;&nbsp;&nbsp;&nbsp; = &quot;&quot;;<br/>$DB_DATABASE = &quot;ai-part&quot;;<br/>require_once(&quot;../adodb/adodb.inc.php&quot;);<br/>$db = NewADOConnection(&quot;$DB_TYPE&quot;);//建立数据库对象<br/>$db-&gt;debug = true;//数据库的DEBUG测试,程序开发期,可设置为true,正式版要注释掉这行,(默认值是false)<br/>$ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;<br/>/*<br/>返回的记录集形式<br/>define(&#039;ADODB_FETCH_DEFAULT&#039;,0);<br/>define(&#039;ADODB_FETCH_NUM&#039;,1);<br/>define(&#039;ADODB_FETCH_ASSOC&#039;,2);<br/>define(&#039;ADODB_FETCH_BOTH&#039;,3); <br/>以上的常量,是在adodb.inc.php里定义的,也就是$ADODB_FETCH_MODE 这个变量可以设置的值<br/>常用的是:ADODB_FETCH_NUM 或 ADODB_FETCH_ASSOC<br/>ADODB_FETCH_NUM&nbsp;&nbsp; 返回的记录集中的索引,是数字形式,即数据库字段的排序顺序值<br/>ADODB_FETCH_ASSOC 返回的记录集中的索引,是原数据库字段名<br/>ADODB_FETCH_BOTH 和 ADODB_FETCH_DEFAULT 是同时返回 ADODB_FETCH_NUM, ADODB_FETCH_ASSOC的值,某些数据库不支持<br/>An example: <br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;$ADODB_FETCH_MODE = ADODB_FETCH_NUM; <br/>&nbsp;&nbsp;&nbsp;&nbsp;$rs1 = $db-&gt;Execute(&#039;select * from table&#039;); <br/>&nbsp;&nbsp;&nbsp;&nbsp;$ADODB_FETCH_MODE = ADODB_FETCH_ASSOC; <br/>&nbsp;&nbsp;&nbsp;&nbsp;$rs2 = $db-&gt;Execute(&#039;select * from table&#039;); <br/>&nbsp;&nbsp;&nbsp;&nbsp;print_r($rs1-&gt;fields); # 返回的数组是: array([0]=&gt;&#039;v0&#039;,[1] =&gt;&#039;v1&#039;) <br/>&nbsp;&nbsp;&nbsp;&nbsp;print_r($rs2-&gt;fields); # 返回的数组是: array([&#039;col1&#039;]=&gt;&#039;v0&#039;,[&#039;col2&#039;] =&gt;&#039;v1&#039;) <br/>*/<br/> <br/>//连接数据库,方法有Connect,PConnect,NConnect,一般使用Connect. NConnect是连接特殊的数据库时才用<br/>if (!@$db-&gt;Connect(&quot;$DB_HOST&quot;, &quot;$DB_USER&quot;, &quot;$DB_PASS&quot;, &quot;$DB_DATABASE&quot;)) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;exit(&#039;服务器忙,请稍候再访问&#039;);<br/>}<br/> <br/>/*<br/>$db-&gt;&nbsp;&nbsp;$rs-&gt; 此类的使用方法<br/>Execute($sql,$inputarr=false),执行参数中的$sql语句,后面的那个$inputarr参数,一般情况下不需要<br/>SelectLimit($sql,$numrows=-1,$offset=-1,$inputarr=false) $numrows:取几条记录,$offset,从第几条开始取,SelectLimit,一般是用于分页,或只取出几条记录的时候用<br/>*/<br/>//Example: 取出多个记录<br/>$sql = &quot;SELECT * FROM table ORDER BY id DESC&quot;;<br/>if (!$rs = $db-&gt;Execute($sql)) {//执行SQL语句,并把结果返回给$rs变量<br/>&nbsp;&nbsp;&nbsp;&nbsp;echo $db-&gt;ErrorMsg();//这个是打印出错信息<br/>&nbsp;&nbsp;&nbsp;&nbsp;$db-&gt;Close();//关闭数据库<br/>&nbsp;&nbsp;&nbsp;&nbsp;exit();<br/>}<br/>while (!$rs-&gt;EOF) {//遍历记录集<br/>&nbsp;&nbsp;&nbsp;&nbsp;echo $rs-&gt;fields[&#039;username&#039;] . &#039;<br/>&#039;;//print_r($rs-&gt;fields)试试,$rs-&gt;fields[&#039;字段名&#039;],返回的是这个字段里的值<br/>&nbsp;&nbsp;&nbsp;&nbsp;$rs-&gt;MoveNext();//将指针指到下一条记录,不用的话,会出现死循环!<br/>}<br/>$rs-&gt;Close();//关闭它,以便释放内存,每次操作完都进行一次关闭,养成编程的好习惯<br/> <br/>//插入新记录<br/>$sql = &quot;INSERT table (user_type,username) VALUES (3, &#039;liucheng&#039;)&quot;;<br/>$db-&gt;Execute($sql);<br/>//更新记录<br/>$sql = &quot;UPDATE table SET user_type=3 WHERE id=2&quot;;<br/>$db-&gt;Execute($sql);<br/>//删除记录<br/>$sql = &quot;DELETE FROM table WHERE id=2&quot;;<br/>$db-&gt;Execute($sql);<br/> <br/>// 取单个记录<br/>//$db-&gt;GetRow($sql), 取出SQL中的第一条记录,并返回一个数组,如果出错,则返回false<br/>$sql = &quot;SELECT username,password,user_type FROM table WHERE id=3&quot;;<br/>$data_ary = $db-&gt;GetRow($sql);<br/>if ($data_ary == false) {//如果用===,可能不是你想要的结果<br/>&nbsp;&nbsp;&nbsp;&nbsp;echo &#039;没有找到此记录&#039;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;exit();<br/>} else {<br/>&nbsp;&nbsp;&nbsp;&nbsp;echo $data_ary[&#039;username&#039;] . &#039; &#039; . $data_ary[&#039;password&#039;] . &#039; &#039; . $data_ary[&#039;user_type&#039;] . &#039;<br/>&#039;;<br/>}<br/>//这里没有用到$rs,则不需要$rs-&gt;Close();<br/>//另一种方法 (使用上面的方法比较好,又方便)<br/>$sql = &quot;SELECT username,password,user_type FROM table WHERE id=3&quot;;<br/>if (!$rs = $db-&gt;Execute($sql)) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;echo $db-&gt;ErrorMsg();<br/>&nbsp;&nbsp;&nbsp;&nbsp;$db-&gt;Close();<br/>&nbsp;&nbsp;&nbsp;&nbsp;exit();<br/>}<br/>if (!$result = $rs-&gt;FetchRow()) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;echo &#039;没有找到此记录&#039;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;exit();<br/>} else {<br/>&nbsp;&nbsp;&nbsp;&nbsp;echo $result[&#039;username&#039;] . &#039; &#039; . $result[&#039;password&#039;] . &#039; &#039; . $result[&#039;user_type&#039;] . &#039;<br/>&#039;;<br/>}<br/> <br/>//$db-&gt;GetOne($sql) 取出SQL中的第一条记录的第一个字段的值,如果出错,则返回false<br/>$sql = &quot;SELECT COUNT(id) FROM table&quot;;<br/>$record_nums = $db-&gt;GetOne($sql);<br/>echo $record_nums;<br/>$sql = &quot;SELECT username,password,user_type FROM table WHERE user_id=1&quot;;<br/>$result = $db-&gt;GetOne($sql);<br/>echo $result;//此值为记录中的username的值<br/>/*<br/>在进行添加,修改,删除记录操作时,要对字符串型的字段,使用$db-&gt;qstr()对用户输入的字符进行处理,对数字型字段,要在之前,进行数据判断<br/>更新记录,注意:这是针对php.ini中,magic_quotes被设置为Off的情况,如果不确定,可以使用<br/>$db-&gt;qstr($content,get_magic_quotes_gpc())<br/>注意:content= 等号右边,没有单引号<br/>*/<br/>$sql = &quot;UPDATE table SET content=&quot; . $db-&gt;qstr($content) . &quot; WHERE id=2&quot;;<br/>$db-&gt;Execute($sql);<br/> <br/> <br/>/*$db-&gt;Insert_ID(),无参数,返回刚刚插入的那条记录的ID值,仅支持部分数据库,带auto-increment功能的数据库,如PostgreSQL, MySQL 和 MS SQL <br/>*/<br/>//Example:<br/>$sql = &quot;INSERT table (user_type,username) VALUES (3, &#039;liucheng&#039;)&quot;;<br/>$db-&gt;Execute($sql);<br/>$data_id = $db-&gt;Insert_ID();<br/>echo $data_id;<br/> <br/>/*$db-&gt;GenID($seqName = &#039;adodbseq&#039;,$startID=1),产生一个ID值.$seqName:用于产生此ID的数据库表名,$startID:起始值,一般不用设置,它会把$seqName中的值自动加1.支持部分数据库,某些数据库不支持<br/> <br/>Insert_ID,GenID,一般我用GenID,使用它的目的,是在插入记录后,要马上得到它的ID时,才用<br/>*/<br/>/*Example:<br/>先创建一个列名为user_id_seq的表,里面只有一个字段,id,int(10),NOT NULL,然后插入一条值为0的记录<br/>*/<br/>$user_id = $db-&gt;GenID(&#039;user_id_seq&#039;);<br/>$sql = &quot;INSERT table (id, user_type,username) VALUES (&quot; . $user_id . &quot;, 3, &#039;liucheng&#039;)&quot;;<br/>$db-&gt;Execute($sql);<br/> <br/>/*<br/>$rs-&gt;RecordCount(),取出记录集总数,无参数<br/>它好像是把取出的记录集,用count()数组的方法,取得数据的数量<br/>如果取大量数据,效率比较慢,建议使用SQL里的COUNT(*)的方法<br/>$sql = &quot;SELECT COUNT(*) FROM table&quot;, 用此方法时,不要在SQL里加ORDER BY,那样会降低执行速度<br/> <br/>Example:<br/>*/<br/>$sql = &quot;SELECT * FROM table ORDER BY id DESC&quot;;<br/>if (!$rs = $db-&gt;Execute($sql)) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;echo $db-&gt;ErrorMsg();<br/>&nbsp;&nbsp;&nbsp;&nbsp;$db-&gt;Close();<br/>&nbsp;&nbsp;&nbsp;&nbsp;exit();<br/>}<br/>$record_nums = $rs-&gt;RecordCount();<br/> <br/>/*<br/>如果想对某一结果集,要进行两次同样的循环处理,可以用下面方法<br/>以下,只是一个例子,只为说明$rs-&gt;MoveFirst()的使用方法<br/>*/<br/>$sql = &quot;SELECT * FROM table ORDER BY id DESC&quot;;<br/>if (!$rs = $db-&gt;Execute($sql)) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;echo $db-&gt;ErrorMsg();<br/>&nbsp;&nbsp;&nbsp;&nbsp;$db-&gt;Close();<br/>&nbsp;&nbsp;&nbsp;&nbsp;exit();<br/>}<br/>$username_ary = array();<br/>while (!$rs-&gt;EOF) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;$username_ary[] = $rs-&gt;fields[&#039;username&#039;]<br/>&nbsp;&nbsp;&nbsp;&nbsp;echo $rs-&gt;fields[&#039;username&#039;] . &#039;<br/>&#039;;//print_r($rs-&gt;fields)试试,$rs-&gt;fields[&#039;字段名&#039;],返回的是这个字段里的值<br/>&nbsp;&nbsp;&nbsp;&nbsp;$rs-&gt;MoveNext();//将指针指到下一条记录,不用的话,会出现死循环!<br/>}<br/>$username_ary = array_unique($username_ary);<br/> <br/>$rs-&gt;MoveFirst();//将指针指回第一条记录,无参数<br/>while (!$rs-&gt;EOF) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;echo $rs-&gt;fields[&#039;password&#039;] . &#039;<br/>&#039;;//print_r($rs-&gt;fields)试试,$rs-&gt;fields[&#039;字段名&#039;],返回的是这个字段里的值<br/>&nbsp;&nbsp;&nbsp;&nbsp;$rs-&gt;MoveNext();//将指针指到下一条记录,不用的话,会出现死循环!<br/>}<br/>$rs-&gt;Close();<br/> <br/> <br/>/*<br/>当本页程序,对数据库的操作完毕后,要$db-&gt;Close();<br/> <br/>*/<br/> <br/>$db-&gt;Close();<br/> <br/>/*一个不错的方法 */<br/>if (isset($db)) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;$db-&gt;Close();<br/>}<br/>?&gt;<br/>
]]>
</description>
</item><item>
<link>http://jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] 常用的adodb使用方法,学习资料]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>