Question

J'essaie de me connecter à une base de données Oracle 11g XE fonctionnant sous Windows à partir d'un serveur Ubuntu 14.04 distant en utilisant PDO_OCI en php.J'ai suivi ce guide http://gist.github.com/tassoevan/10392954 (plusieurs fois) et continuez à obtenir l'erreur suivante :

je n'ai pas trouvé de pilote

Cependant, lorsque j'appelle PDO::getAvailableDrivers(), cela me donne ceci :

Tableau ( [0] => mysql [1] => oci [2] => sqlite )

Note:oci n'était pas là avant de suivre le guide dans le lien ci-dessus.

Tous les autres tutoriels que j'ai pu trouver étaient fondamentalement la même chose.

J'ai installé le client instantané Oracle (version 11.1).La dernière version n'affichait même pas le pilote dans la liste des pilotes disponibles.

Je sais également que le pilote utilisé dans cette méthode est plus ancien, mais il n'existe pas de guides étape par étape sur la façon de le faire fonctionner avec le dernier.Je suis nouveau sur les bases de données Oracle ainsi que sur PHP, donc une aide étape par étape serait grandement appréciée.

MISE À JOUR:J'ai compris le problème du pilote.C'était dans mon code php, et quelque chose de très idiot.Je poste pour le bénéfice des autres.

Mon code d'origine avait "OCI" en majuscules lors de l'établissement de la connexion.

$tns = "  
(DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = myIP)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = XE)
    )
  )
       ";

try{
$pdo = new PDO('OCI:dbname='.$tns ,'username','password'); // Capital 'OCI' here is WRONG so changed to 'oci:dbname='
} catch(PDOException $e){
    echo $e->getMessage();
}

print_r(PDO::getAvailableDrivers());

Cependant, j'ai des problèmes pour interroger la base de données.Il semble que rien ne se passe.J'ai autorisé le port 1521 dans le pare-feu Windows pour les entrées et les sorties.Toute suggestion?

Voici mon code php :

$stmt = $pdo->prepare("SELECT * FROM `PDO`;");
$stmt->execute();
$result = $stmt->fetchColumn(0);
echo $result;

La table PDO n'a qu'une seule colonne avec une seule ligne.

La base de données Oracle doit-elle être configurée pour autoriser les connexions à distance ?

Était-ce utile?

La solution

Il y a eu deux problèmes avec mon code PHP.1) La façon dont la connexion PDO a été initiée était incorrecte...voir la mise à jour dans le message original.Cela a résolu mon problème de pilote.

2) Oracle ne semble pas aimer le caractère backtick, contrairement à MySQL.J'ai donc dû les supprimer de ma requête pour ressembler à ceci

$stmt = $pdo->prepare("SELECT * FROM PDO"); // Originally was SELECT * FROM `PDO`
$stmt->execute();
$result = $stmt->fetchColumn(0);
echo $result; 

Cela a résolu mon problème d'interrogation de base de données.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top