Codeigniter数据库帮助? PHP连接工作

时间:2016-10-19 16:37:04

标签: php database oracle codeigniter

我使用的是PHP 5.3.3,因为我无法控制服务器。我也使用CodeIgniter 3.1.0。我尝试使用CI连接到Oracle服务器,Oracle 11g版本11.2.0.4.0。

我可以使用php&#o; oracle_connect:

连接得很好
$connect_string = "(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = HOSTNAME)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SID = MYSID)))";
$oconnect = oci_connect(USERNAME, PASSWORD, $connect_string );
$query = "select * from DB.TABLE";
$stid=oci_parse($oconnect, $query);
$r = oci_execute($stid);
while ($row = oci_fetch_array($stid, OCI_RETURN_NULLS+OCI_ASSOC)) {
  print_r($row);
}

但是当我尝试从CodeIgniter中设置数据库连接时,我收到一个错误,即TNS名称未知,或者它无法连接,或者服务未知。取决于我如何调整它。

请注意CodeIgniter上的示例可能有误。 dsn使用SID =其中示例具有SERVICE =;直到我在php手册中读到用户评论,他们才建议SID = for php' s oci_connect。

这是我对CodeIgniter所拥有的:

$dsn_string = "(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = HOSTNAME)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SID = MYSID)))";
$db['default'] = array(
  'dsn' => $dsn_string,
    'hostname' => 'HOSTNAME',
    'username' => 'USERNAME',
    'password' => 'PASSWORD',
    'database' => 'DB',
    'dbdriver' => 'oci8',
    'dbprefix' => '',
    'pconnect' => FALSE,
    'db_debug' => (ENVIRONMENT !== 'production'),
    'cache_on' => FALSE,
    'cachedir' => '',
    'char_set' => 'utf8',
    'dbcollat' => 'utf8_general_ci',
    'swap_pre' => '',
    'encrypt' => FALSE,
    'compress' => FALSE,
    'stricton' => FALSE,
    'failover' => array(),
    'save_queries' => TRUE
);

关于可能发生的事情的任何想法?我也会尝试其他一些事情。我可以忽略CI的数据库连接,但由于我主要使用它作为角度前端的api提供者,因此db是我甚至使用CI的最大原因。

谢谢!

1 个答案:

答案 0 :(得分:0)

@Tpojka - 我必须使用我给的服务器,但结果证明这不是问题。

问题是.htaccess文件。我使用了现有的.htaccess,它有以下几行:

DirectoryIndex index.php

我一开始并没有想到任何事情,因为这是一个非常正常的路线,但后来我意识到我已经改变了我的config.php以从网址中删除index.php。一旦我从.htaccess中删除了那一行,一切都重新开始了。

啧。我认为这不会导致数据库错误,但这是摆脱最后错误的最终解决方案。