怎样对 MYSQL 多数据库操作

#1 10dawei

数据库:
test1
test2



教程上没有写怎样切换config db配置
请问大神门 怎样搞 给个提示吧。。?

2011-02-28 16:25:50

#2 jake

http://speedphp.com/post/model-multi.html

2011-02-28 17:30:57

#3 10dawei

谢谢 JAKE

不过我不清楚传进去的mysql 参数是什么格式 array 格式吗?

2011-03-01 09:38:14

#4 jake

嗯,这个配置是数组,等值于spConfig配置中的db项
        'db' => array(  // 数据库连接配置
                'driver' => 'mysql',   // 驱动类型
                'host' => 'localhost', // 数据库地址
                'port' => 3306,        // 端口
                'login' => 'root',     // 用户名
                'password' => '',      // 密码
                'database' => '',      // 库名称
                'prefix' => '',           // 表前缀
                'persistent' => FALSE,    // 是否使用长链接
        ),

2011-03-01 09:59:34

#5 weixiupc

JAKE,按照http://speedphp.com/post/model-multi.html 这个配置不成功,一直提示数据库连接错误,有实例可以参考一下吗?

2011-03-11 13:28:05

#6 weixiupc

多数据库配置不成功,请教:
class main extends spController
{
        function index(){
            $_db = array(  
                        'driver' => 'mssql',  
                        'host' => '192.168.8.254',
                        'port' => '1433',        // 端口  
                        'login' => 'sss',  
                        'password' => '123456',  
                        'database' => 'new',  
                        'prefix' => '' );
       $a=spClass('db_mssql',$_db,SP_PATH.'/Drivers/mssql.php');
        }
}
出错信息:
数据库链接错误 :
/vod/vod/sptest/SpeedPHP/Drivers/mssql.php on line 99
94.       */
95.      public function __construct($dbConfig)
96.      {
97.          if(!function_exists('mssql_connect'))spError('PHP环境未安装MSSQL函数库!');
98.          $linkfunction = ( TRUE == $dbConfig['persistent'] ) ? 'mssql_pconnect' : 'mssql_connect';

99.          $this->conn = $linkfunction($dbConfig['host'], $dbConfig['login'], $dbConfig['password']) or spError("数据库链接错误 : " . mssql_get_last_message());  

100.          mssql_select_db($dbConfig['database'], $this->conn) or spError("无法找到数据库,请确认数据库名称正确!");
101.      }
102.      /**
103.       * 对特殊字符进行过滤
104.       *

/vod/vod/sptest/controller/vod_test/main.php on line 12

2011-03-11 14:36:47

#7 jake

不能把MYSQL的配置放到MSSQL里面用,MSSQL的配置可以参考
http://speedphp.com/post/database-setting.html

2011-03-11 14:41:50

#8 weixiupc

先谢JAKE如此快速回复,按照此文http://speedphp.com/post/database-setting.html配置
01        'db' => array(  // 数据库连接配置
02            'driver' => 'mssql',   // 驱动类型
03            'host' => 'SERVER\INSTANCE', // 数据库地址,数据库链接字符串
04            'login' => 'root',     // 用户名
05            'password' => '',      // 密码
06            'database' => '',      // 库名称
07            'prefix' => '',           // 表前缀
08            'persistent' => FALSE,    // 是否使用长链接
09        ),
10        'db_driver_path' => SP_PATH.'/Drivers/mssql.php', // 自定义数据库驱动文件地址
    请注意:MsSQL配置中,链接标识以及链接端口,请在“host”配置中设置,如 host => 'SERVER\INSTANCE'或host => 'laptop2,1030'
还是不行,host改成数据库所在计算机名称显示一样错误,标注红色不怎么理解,再次麻烦与请教JAKE,弄了一天也没配置成功,郁闷!!!不搞多数据库配置,怎么连接都能成功。

2011-03-11 15:03:19

#9 weixiupc

忘了说明一下,我用的是mssql2005。

2011-03-11 15:07:41

#10 weixiupc

换成mssql2000出错信息一样。

2011-03-11 15:09:40

#11 weixiupc

把上述配置信息全部换成mysql后,同样出现如下错误信息:
数据库链接错误 : Access denied for user 'daemon'@'localhost' (using password: NO)
/vod/vod/sptest/controller/vod_test/main.php on line 12

2011-03-11 15:14:39

#12 weixiupc

http://speedphp.com/bbs/viewthread.php?tid=575&highlight=%27persistent%27此文下面方法连接正常。
$server = 'KALLESPC\SQLEXPRESS';
$link = mssql_connect($server, 'sa', 'phpfi');
if (!$link) {
    die('Something went wrong while connecting to MSSQL');
}
不知道怎么配置多数据库连接了,JAKE在啊?

2011-03-11 16:05:03

#13 jake

按你上面的配置
$配置 = array(
'driver' => 'mssql',   // 驱动类型
'host' => 'KALLESPC\SQLEXPRESS', // 数据库地址,数据库链接字符串
'login' => 'sa',     // 用户名
'password' => 'phpfi',      // 密码
);

2011-03-11 21:10:21

#14 weixiupc

JAKE,还是不行,郁闷!下面是具体各文件内容,哪里写的不对吗?
config.php内容
        $spConfig = array(
                'view' => array(  
                        'enabled' => TRUE, // 开启Smarty支持  
                        'config' =>array(  
                                'template_dir' => APP_PATH.'/tpl', // 模板页面所在的目录  
                                'compile_dir' => APP_PATH.'/tmp', // 临时文件编译目录            
                                'cache_dir' => APP_PATH.'/tmp', // 临时文件缓存目录  
                                'left_delimiter' => '<{',  // Smarty左限定符,默认是{  
                                'right_delimiter' => '}>', // Smarty右限定符,默认是}  
                                ),
                ),
        );
test.php文件内容:
define("APP_PATH",dirname(__FILE__));
define("SP_PATH",dirname(__FILE__).'/SpeedPHP');
require("config.php");
//require("config-ms.php");
$spConfig['controller_path'] = APP_PATH.'/controller/'.basename(__FILE__,".php");
require(SP_PATH."/SpeedPHP.php");
spRun();

test目录下main.php文件内容:
class main extends spController
{
        function index(){
            $_db = array(  
                        'driver' => 'mssql',  
                        'host' => '192.168.8.254,1433',
                        'login' => 'sss',  
                        'password' => '123456',  
                        'database' => 'new',  
                        'prefix' => '',
                        'persistent' => FALSE   // 是否使用长链接
                 );
       $a=spClass('db_mssql',$_db,SP_PATH.'/Drivers/mssql.php');
        
       $a = spClass('ms_guestbook');
       // 切换到MSSQL
       $a->_db = $dsn_mssql;
        }
}

model目录下ms_guestbook.php文件内容:
class ms_guestbook extends spModel{// 这是一个继承了spModel的数据类
      var $pk = 'id';  
      var $table = 'tbl_room';

        public function name_list(){
                $oAcl=spClass('ms_guestbook');
                $condition="select * from tbl_room where id='101'";
                $result=$oAcl->findsql($condition);
                return $result;
        }
}

运行http://192.168.8.247/sptest/test.php出错信息:
数据库链接错误 :
/vod/vod/sptest/SpeedPHP/Drivers/mssql.php on line 99
94.       */
95.      public function __construct($dbConfig)
96.      {
97.          if(!function_exists('mssql_connect'))spError('PHP环境未安装MSSQL函数库!');
98.          $linkfunction = ( TRUE == $dbConfig['persistent'] ) ? 'mssql_pconnect' : 'mssql_connect';

99.          $this->conn = $linkfunction($dbConfig['host'], $dbConfig['login'], $dbConfig['password']) or spError("数据库链接错误 : " . mssql_get_last_message());  

100.          mssql_select_db($dbConfig['database'], $this->conn) or spError("无法找到数据库,请确认数据库名称正确!");
101.      }

/vod/vod/sptest/controller/test/main.php on line 13
请教JAKE如何处理,哪里写的不对?

2011-03-14 09:45:47

#15 jake

上面的代码问题不少,建议是先做好一个数据库链接的程序,然后再研究多数据库的技术。

2011-03-14 09:59:30