首页 > php > uchome二次开发 数据库操作

uchome二次开发 数据库操作

2010年6月22日 亲亲宝宝 发表评论 阅读评论

对uchome进行二次开发必然要对数据库进行操作,我们可以通过mysql的管理器看到表的结构,了解字段类型和对于各个表的整体认识.

这里主要是介绍数据库访问的操作:

首先看看查询是怎么回事?

在space_index.php文件中,我们看到这样的查询代码:

$query = $_SGLOBAL[‘db’]->query(“SELECT * FROM “.tname(‘friend’).” WHERE uid=’$space[uid]’ AND status=’1′ LIMIT 0,6″);

$friend = $_SGLOBAL[‘db’]->fetch_array($query);

这样我们就获得了一个用户的第一个好友,每个字段都放到了数组中,以字段名为键名.

要获得列表,需要使用下面的方式:

while ($value = $_SGLOBAL[‘db’]->fetch_array($query)) {

$Datalist[] = $value;

}

$_SGLOBAL[‘db’]是怎样的一个对象呢?在function_common.php文件中找到答案:

function dbconnect() {

global $_SGLOBAL, $_SC;

include_once(S_ROOT.’./source/class_mysql.php’);

$_SGLOBAL[‘db’] = new dbstuff;

$_SGLOBAL[‘db’]->charset = $_SC[‘dbcharset’];

$_SGLOBAL[‘db’]->connect($_SC[‘dbhost’], $_SC[‘dbuser’], $_SC[‘dbpw’], $_SC[‘dbname’], $_SC[‘pconnect’]);

}

原来是class_mysql.php文件中的dbstuff对象

dbstuff类中最重要的方法就是connect()和query()方法,connect负责开启数据库连接,具体取数据就靠query 了,query的核心代码如下:

$func = $type == ‘UNBUFFERED’ && @function_exists(‘mysql_unbuffered_query’) ?

‘mysql_unbuffered_query’ : ‘mysql_query’;

if(!($query = $func($sql, $this->link)) && $type != ‘SILENT’) {

$this->halt(‘MySQL Query Error’, $sql);

}

刚看的时候没找到查询语句怎么执行的,后来发现是个小技巧,声明了一个变量$func,进行type判断后,赋值为“mysql_query”,然后$func(),就等于mysql_query(),这个技巧熟悉ror的同志肯定不会陌生。

第二、数据更新,query并不仅仅负责查询,数据的插入和更新都是通过query来完成的,最简单直接的方式使用纯sql语句

$_SGLOBAL[‘db’]->query(你的sql语句 ‘);

uchome还定义了另外的更新和添加数据的方法,代码在function_common.php中:

//添加数据

function inserttable($tablename, $insertsqlarr, $returnid=0, $replace = false) {

global $_SGLOBAL;

$insertkeysql = $insertvaluesql = $comma = ”;

foreach ($insertsqlarr as $insert_key => $insert_value) {

$insertkeysql .= $comma.’`’.$insert_key.’`’;

$insertvaluesql .= $comma.’\”.$insert_value.’\”;

$comma = ‘, ‘;

}

$method = $replace?’REPLACE’:’INSERT’;

$_SGLOBAL[‘db’]->query($method.’ INTO ‘.tname($tablename).’ (‘.$insertkeysql.’) VALUES (‘.$insertvaluesql.’) ‘);

if($returnid && !$replace) {

return $_SGLOBAL[‘db’]->insert_id();

}

}

//更新数据

function updatetable($tablename, $setsqlarr, $wheresqlarr) {

global $_SGLOBAL;

$setsql = $comma = ”;

foreach ($setsqlarr as $set_key => $set_value) {

$setsql .= $comma.’`’.$set_key.’`’.’=\”.$set_value.’\”;

$comma = ‘, ‘;

}

$where = $comma = ”;

if(empty($wheresqlarr)) {

$where = ‘1’;

} elseif(is_array($wheresqlarr)) {

foreach ($wheresqlarr as $key => $value) {

$where .= $comma.’`’.$key.’`’.’=\”.$value.’\”;

$comma = ‘ AND ‘;

}

} else {

$where = $wheresqlarr;

}

$_SGLOBAL[‘db’]->query(‘UPDATE ‘.tname($tablename).’ SET ‘.$setsql.’ WHERE ‘.$where);

}

分类: php 标签: , 4,032 次阅读
原文链接:http://www.wenhq.com/article/view_610.html
欢迎转载,请注明出处:亲亲宝宝
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.