我的ADODB与Oracle的连接存在服务名称问题。
这是我与Oracle服务器的连接
这是我的代码
$dbhostname = "10.0.4.51";
$dbusername = "user1";
$dbpassword = "user1";
$port = "1521";
$db = ADONewConnection('oci8');
$cstr = "(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=$dbhostname)(PORT=$port))
(CONNECT_DATA=(SID=$tnsname)))";
$db->Connect($cstr, $dbusername, $dbpassword) or die('db not available');
但由于此连接,我仍然无法对我的查询做任何事情 如果有任何建议,我完全感谢你:)
答案 0 :(得分:0)
我不是PHP专家,但我有两个想法。
尝试使用Oracle的EZconnect连接字符串,让Oracle全力以赴。在你的情况下,它将是:
10.0.4.51:1521/devoltp
我注意到您的连接对话框使用了服务名称,但在您的连接字符串中指定了SID。将$cstr
中的“SID”更改为“服务名称”
答案 1 :(得分:0)
试试这个简单的课程
class AdoConnection {
public $dbh;
public function __construct() {
include_once '../adoconnection/adodb5/adodb.inc.php'; // include your adodb.inc.php file
$server = "127.0.0.1";
$user = "USER/SCHEMA/Database";
$pwd = "password";
$db = "SID OR Service_Name";
$this->dbh = NewADOConnection('oci8');
$this->dbh->Connect(FALSE, $user, $pwd, '(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = ' . $server. ')(PORT = 1521)) (CONNECT_DATA = (SERVICE_NAME = ' . $db . ') (SID = ' . $db . ')))');
}
public function select($sql) {
$result = $this->dbh->Execute($sql);
$result = $result->GetRows();
return $result;
}
public function insert($sql) {
$result = $this->dbh->Execute($sql);
return $result;
}
}
$dbh = new AdoConnection();
$dbh->select($sql);
$dbh->insert($sql);
只需保持error_reporting和display_errors为On即可查看错误。