Code : Tout sélectionner
[FreeTDS]
Description = TDS driver (Sybase/MS SQL)
Driver = libtdsodbc.so
Setup = libtdsS.so
CPTimeout =
CPReuse = Code : Tout sélectionner
[MABASE]
Driver = FreeTDS
Description = ODBC connection via FreeTDS
Trace = Yes
TraceFile = /tmp/odbc.ini.log
Server = IP.DE.MON.SERVEUR
Port = 1433
Database = myDatabaseCode : Tout sélectionner
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL>$dbh = new PDO("odbc:Driver={MABASE};Server=IP.DE.MON.SERVEUR;Database=myDatabase;Uid=user;Pwd=password;");
--> J'ai une erreur "can't open lib 'MABASE' : file not found".$dbh = new PDO("odbc:MABASE", "user, "password");
--> Erreur de segmentation$dbh = new PDO("odbc:MABASE");
--> Data source name not found, and no default driver specified$dbh = new PDO("odbc:Driver=FreeTDS;Server=IP.DE.MON.SERVEUR;Port=1433;Database=myDatabase;Uid=user;Pwd=password;");
--> Can't open cursor lib "/etc/libodbccr.so"Ha oui, effectivement, PDO ce sera+1 pour PDO, c'est à mon sens le plus "future-proof"
après c'est suivant tes besoins et possibilité d'installation sur le serveur.D'après la doc c'est soit le driver ODBC soit un Windows serveur au choix
Il me semble que oui, puisque les fonctions odbc_* fonctionnent, ou cela n'a rien à voir ?pour le problème avec le driver odbc, est ce que l'extension est bien présente dans un phpinfo ?
Je n'ai pas testé stricto cette syntaxe, mais mon dernier exemple était basé là dessus. Echec...$dsn = 'DRIVER=FreeTDS;SERVERNAME=server1;DATABASE=testdb;APP=My PHP Application;UID=user;';
Alors là, je vais me montrer enquiquinant, mais je ne veux pas installer les pilotes Microsoft sur mon Linux, sauf si je n'ai vraiment pas le choix$cn = new PDO("odbc:Driver={SQL Native Client};Server=127.0.0.1\SQLEXPRESS;Database=bd_2009; Uid=ut;Pwd=mdp;");
Je vais regarder ce post en détail. Pour l'heure, je réinstalle une machine propre pour tous ces tests. je vous tiens au courantet celui ci une solution qui pourrais coller à ton cas : http://stackoverflow.com/questions/2016 ... a-pdo-odbc
en même temps si tu attaques une base MS c'est mieux avec les drivers qui vont bienAlors là, je vais me montrer enquiquinant, mais je ne veux pas installer les pilotes Microsoft sur mon Linux, sauf si je n'ai vraiment pas le choix
Pour l'instant, je n'en suis pas là. Je suis convaincu de ne pas faire ce qu'il faut pour utiliser ODBC dans PDO.
Code : Tout sélectionner
[FreeTDS]
Description = v0.63 with protocol v8.0
Driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.soCode : Tout sélectionner
odbcinst -i -d -f tds.driverCode : Tout sélectionner
[SOURCENAME]
Driver=FreeTDS
Description=Test MS SQL Database with FreeTDS
Trace=No
Server=IP.DE.MON.SERVEUR
Port=1433
TDS Version=8.0
Database=myDatabaseCode : Tout sélectionner
odbcinst -i -s -f tds.datasourceCode : Tout sélectionner
isql -v SOURCENAME 'user' 'password'
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL>$dbh = new PDO("odbc:Driver=FreeTDS;Server=IP.DE.MON.SERVEUR;Port=1433;Database=myDatabase;Uid=user;Pwd=password;");
vous aurez l'erreur Can't open cursor lib "/etc/libodbccr.so" comme je l'ai indiqué précédemment.Code : Tout sélectionner
cd /usr/lib/x86_64-linux-gnu
ln -s libodbccr.so.2 libodbccr.so