Как настроить ADODB для подключения Oracle с именем службы
У меня проблема с моим подключением 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');
Но я все еще не могу ничего сделать с моим запросом из-за этой связи
Если есть предложения, я полностью благодарен вам:)
2 ответа
Я не эксперт по PHP, но у меня две мысли.
Попробуйте использовать строку соединения Oracle EZconnect и дайте Oracle разобраться со всем этим. В вашем случае это будет:
10.0.4.51:1521/devoltp
Я заметил, что в вашем диалоге соединения использовалось имя службы, но в строке соединений вы указали SID. Измените "SID" в вашем
$cstr
на "ИМЯ СЛУЖБЫ"
Попробуйте этот простой класс
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 включенными, чтобы увидеть ошибки.