Как настроить 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, но у меня две мысли.

  1. Попробуйте использовать строку соединения Oracle EZconnect и дайте Oracle разобраться со всем этим. В вашем случае это будет:

    10.0.4.51:1521/devoltp

  2. Я заметил, что в вашем диалоге соединения использовалось имя службы, но в строке соединений вы указали SID. Измените "SID" в вашем $cstr на "ИМЯ СЛУЖБЫ"

EZ Connect Примеры

Попробуйте этот простой класс

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 включенными, чтобы увидеть ошибки.

Другие вопросы по тегам