If you want to use PDO_OCI and get proper russian windows-1251 codepage, just add charset=CL8MSWIN1251 to your DSN.
example:
<?php
$dbc = new PDO('oci:dbname=192.168.10.145/orcl;charset=CL8MSWIN1251', 'username', 'password');
?>
Аlso setting apache/registry/system environment variable NLS_LANG to RUSSIAN_CIS.CL8MSWIN1251 may helps you.
PDO_OCI DSN
(PECL PDO_OCI >= 0.1.0)
PDO_OCI DSN — Connexion aux bases de données Oracle
Description
Le Data Source Name (DSN) de PDO_OCI est composé des éléments suivants :
- Préfixe DSN
-
Le préfixe DSN est
oci:. - dbname (Oracle Instant Client)
-
Le URI de la connexion Oracle Instant Client prend la forme de
dbname=//hostname:port-number/database. Si vous vous connectez sur une base de données définies dans tnsnames.ora, utilisez seulement le nom de la base de données :dbname=database. - charset
-
Le jeu de caractères côté client pour l'environnement courant.
Exemples
Exemple #1 Exemples avec PDO_OCI DSN
Les exemples suivants montrent PDO_OCI DSN pour se connecter aux bases de données Oracle :
// Connexion à une base de données définie dans tnsnames.ora oci:dbname=mydb // Connexion en utilisant le client Oracle Instant oci:dbname=//localhost:1521/mydb
Alexander Ashurkoff ¶
6 years ago
Helpful User ¶
6 years ago
If you get the error: TNS: could not resolve service name
Remember that the PDO wants to use the default client, which will only use the tnsnames.ora in %ORACLE_HOME%\network\admin. Check that file and make sure your service is defined in there.
BTW, there is a bug with pdo_oci8 with 9i - don't use it. Make sure you just use pdo_oci.dll.
