欢迎各位兄弟 发布技术文章
这里的技术是共享的
(做了本文的下面的八项改动之后 )我发现有一个重大问题 自己不知如何解决
1)如果使用了 mysql
则在使用 执行第二个数据库之后 (使用了 $dsql2执行了或增或删或改或查之后 )再执行第一个数据库(使用了 $dsql执行了或增或删或改或查 ),那么仍然是从第二个数据库执行存取数据的 这个是什么原因 ,暂时没弄清楚
好像先执行第一个数据库,再执行第二个数据库,也是出现同样的情况
(具体指第一次执行的时候两个可以,但第三个(第四个,第五个.....)执行时 就会按照第二个执行的数据库来,也许是因为mysql是面向过程的吧,具体原因不太懂)
(但是我们如果连一次数据库(打开一次数据库),再关闭之,然后再连另一个数据库(打开另一个数据库),再关闭之,,就可以了)
例如
$dsql2 = $db2 = new DedeSql2(FALSE); $row2 = $dsql2->GetOne("Select * From `#@__homepageset`"); var_dump($row2); $dsql2->Close(true); $dsql = $db = new DedeSql(FALSE); $row = $dsql->GetOne("Select * From `#@__homepageset`"); var_dump($row); $dsql->Close(true); $dsql2 = $db2 = new DedeSql2(FALSE); $row2 = $dsql2->GetOne("Select * From `#@__homepageset`"); var_dump($row2); $dsql2->Close(true); $dsql = $db = new DedeSql(FALSE); $row = $dsql->GetOne("Select * From `#@__homepageset`"); var_dump($row); $dsql->Close(true); var_dump($dsql); var_dump($dsql2);
2)如果使用了 mysqli 是正确的是正常的,也许是因为mysqli既有面向过程的功能,又有面向对象的功能吧
在 系统设置=>核心设置 里面
下面是八项改动
1)在 data/common.inc.php 中 写如下的两个数据库连接代码
<?php
//数据库连接信息
$cfg_dbhost = 'localhost';
$cfg_dbname = 'www.4006055610.com';
$cfg_dbuser = 'root';
$cfg_dbpwd = '';
$cfg_dbprefix = 'dede_';
$cfg_db_language = 'utf8';
$cfg2_dbhost = 'localhost';
$cfg2_dbname = 'm.4006055610.com';
$cfg2_dbuser = 'root';
$cfg2_dbpwd = '';
$cfg2_dbprefix = 'dede_';
$cfg2_db_language = 'utf8';
?>
2)根据 include/dedesql.class.php include/dedesqli.class.php
复制一下 文件名为(当然可以自己定文件名)
dedesql2.class.php dedesqli2.class.php
在这两个文件里 把 数据库的配置(关于$cfg_的配置) 改为($cfg2_)
3)include/common.inc.php 的 约 297行及之后的几行
改为
//引入数据库类
if ($GLOBALS['cfg_mysql_type'] == 'mysqli' && function_exists("mysqli_init"))
{
require_once(DEDEINC.'/dedesqli.class.php');
require_once(DEDEINC.'/dedesqli2.class.php');
} else {
require_once(DEDEINC.'/dedesql.class.php');
require_once(DEDEINC.'/dedesql2.class.php');
}
4)在 include/dedesql2.class.php 约21行
改为
$dsql2 = $db2 = new DedeSql2(FALSE);
约29行改为
class DedeSql2
还有把这个文件的其它的所有的dedesql 改成 dedesql2
还有把这个文件的所有的dsql 替换成 dsql2
5)在 include/dedesqli2.class.php 约21行
改为
$dsql2 = $dsqli2 = $db2 = new DedeSqli2(FALSE); 约29行改为 class DedeSqli2 还有把这个文件的其它的所有的dedesqli 改成 dedesqli2 还有把这个文件的所有的dsqli 替换成 dsqli2 6) include/dedesql2.class.php 下面的内容 约 609行
//复制一个对象副本
function CopySQLPoint(&$ndsql)
{
$GLOBALS['dsql'] = $ndsql;
}
变成下面的 也就是
CopySQLPoint变成 CopySQLPoint2
dsql 变成 dsql2
//复制一个对象副本 function CopySQLPoint2(&$ndsql) { $GLOBALS['dsql2'] = $ndsql; } 把这个文件的CopySQLPoint 改所在CopySQLPoint2 (其实总共两处)
7) include/dedesqli2.class.php 注释掉下面的内容 约 609行
//复制一个对象副本
function CopySQLiPoint(&$ndsql)
{
$GLOBALS['dsql'] = $ndsql;
} 变成下面的 也就是
CopySQLiPoint变成 CopySQLiPoint2
dsqli 变成 dsqli2
//复制一个对象副本 function CopySQLiPoint2(&$ndsql)
{
$GLOBALS['dsqli2'] = $ndsql;
}
把这个文件的CopySQLiPoint 改所在CopySQLiPoint2 (其实总共两处) 8)最后检查下 有没有替换重复的 sql