多数据库问题

#1 CoreFamily

在include\functions.php下放入如下代码
$dsn_test = spClass('db_oracle', array('driver' => 'oracle','host' => '10.100.101.109:1521/TEST','login' => 'system','password' => 'manager','prefix' => '','persistent' => FALSE), SP_PATH.'/Drivers/oracle.php', true);
………………
?>
在运行时提示:数据库链接错误 : ORA-01017
同样的配置在入口文件中却一切正常。
$spConfig = array(
        'db_driver_path' => SP_PATH.'/Drivers/oracle.php',
        'db' => array(  
                'driver' => 'oracle',   
                'host' => '10.100.101.109:1521/TEST',
                'login' => 'system',     
                'password' => 'manager',   
                'prefix' => '',           // 表前缀
                'persistent' => FALSE,    // 是否使用长链接
        )
        )
为何导致这样的情况,在手册中找不到答案。


2012-12-18 09:49:03

#2 jake

仔细看 http://www.speedphp.com/thread-3794-1-1.html

spClass('db_oracle',
array(
array(
'driver' => 'oracle','host' => '10.100.101.109:1521/TEST','login' => 'system','password' => 'manager','prefix' => '','persistent' => FALSE
)

)
, SP_PATH.'/Drivers/oracle.php', true);

红色部分才是db的配置,外面还需要一个array()包起来

2012-12-18 10:28:40

#3 CoreFamily

jake 发表于 2012-12-18 10:28
仔细看 http://www.speedphp.com/thread-3794-1-1.html

spClass('db_oracle',
谢谢jake的帮助,

在入口文件增加修改好的配置后,控制器代码如下
class Asset extends spController
{
        function mtgz(){
        $jw_mtgz = spClass('test1');
        $jw_mtgz->_db = $dsn_test;
        $condition = array(null);
        $result = $jw_mtgz->find($condition);
        echo "{$result['testname']}";
        }

}
访问后错误提示是
Call to a member function __val_escape() on a non-object in E:\Web8080\www\WorkSpeed\SpeedPHP\Core\spModel.php on line 112
$condition中已经没有任何函数,但是为何还是会报错?

2012-12-18 11:26:53

#4 jake

为什么要 $condition = array(null); ,手册上没有说过有这种语法。

2012-12-18 11:39:38

#5 CoreFamily

以为换成其他条件,
也是一样显示的Call to a member function __val_escape() on a non-object in E:\Web8080\www\WorkSpeed\SpeedPHP\Core\spModel.php on line 112这个错误呀。
为了能说明问题我才这样写的。

2012-12-18 12:08:36

#6 jake

  function mtgz(){
        $jw_mtgz = spClass('test1');
        $jw_mtgz->_db = $dsn_test;
        $condition = array(null);
        $result = $jw_mtgz->find($condition);
        echo "{$result['testname']}";
        }

看这程序,$dsn_test的值是什么? 看看php的变量使用范围吧。

2012-12-18 12:43:21

#7 xieguolun

01.// MSSQL驱动实例

02.$dsn_mssql = spClass('db_mssql',array( 'MSSQL的配置'), SP_PATH.'/Drivers/mssql.php', TRUE);

03.// MYSQL驱动实例

04.$dsn_mysql = spClass('db_mysql',array( 'MYSQL的配置'), SP_PATH.'/Drivers/mysql.php', TRUE); // MYSQL
该放在哪里呢?

2014-02-13 12:20:44

#8 jake

xieguolun 发表于 2014-2-13 12:20
01.// MSSQL驱动实例

02.$dsn_mssql = spClass('db_mssql',array( 'MSSQL的配置'), SP_PATH.'/Drivers/ms ...
放在使用数据库model之前

2014-02-13 15:13:29

#9 y_e_s_2011@163.

正在找这个问题呢

2014-02-13 20:21:01

#10 xieguolun

怎么用php5.3 连接远程oracle9呢?

2014-02-14 00:01:55

#11 xieguolun

SpeedAMP能连接远程oracle9吗?如能怎么配置?

2014-02-14 00:03:56

#12 jake

xieguolun 发表于 2014-2-14 00:03
SpeedAMP能连接远程oracle9吗?如能怎么配置?
要加上oracle的驱动,具体请参考PHP官网手册。

2014-02-14 10:03:13