uchome二次开发 数据库操作

对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);

}

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值