Veuillez vous connecter ou créer un compte pour suivre ce topic
Ce topic est suivi par: CapitaineMatteo, multimedia999
Auteur Sujet: PHP et database access

multimedia999

Messages: 2

Bonjour,

Je voudrais utiliser PDO pour me connecter à une db access.
Je suis un peu (beaucoup) perdu. Je pense que je dois créer un ODBC (comment faire?) et utilisez celui-ci pour la connexion.
quelqu'un a-t-il un exemple me montrant comment créer cet ODBC et quel serait alors la ligne "connexion =new PDO(….)" pour établir la liaison et pouvoir accéder avec cet objet aux données?

Merci de votre aide.
Daniel 
Publicité

CapitaineMatteo

Messages: 34

Voici le code:
<?php
$bdd = new PDO('mysql:host=<ton hote (si en local: localhost/127.0.0.1)>;dbname=<ton nom de base de données>', '<ton identifiant (phpmyadmin)>', '<ton mot de passe (phpmyadmin)>');
?>

multimedia999

Messages: 2

Bonjour,

Merci pour la réponse, mais celle-ci est pour une db "MySQL". Ma question est pour une database "Access"!

Cordialement
Daniel

Clouder

Messages: 160

Entre PHP et Access je ne m'y connais pas trop mais voici un bout de code : 
<?php
   $dbName = $_SERVER["DOCUMENT_ROOT"] . "products\products.mdb";
   if (!file_exists($dbName)) {
      die("Could not find database file.");
   }
   $db = new PDO("odbc:DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=$dbName;   Uid=; Pwd=;");

multimedia999

Messages: 2

Bonjour,
Merci pour les réponses. En fait, j'ai fini par trouver en rassemblant toutes les informations lues et reçues à gauche et à droite (au centre aussi😜).
le code est presque bon, sauf que le nom du driver ODBC est maintenant odbc: "DRIVER={Microsoft Access Driver (*.mdb, *.accdb) (ATTENTION, l'espace après la virgule est obligatoire). C'est dû au changement de formats des db access depuis access 2003.
Le driver DOIT être installé sur la machine.
Et PHP.INI DOIT être modifié en mettant la ligne suivant comme active et plus comme commentaire : "extension=pdo_odbc".

Il me reste une réaction étrange, car si la connexion fonctionne et que je peux lire les données, la fonction "rowcount" de l'objet connecté retourne -1, même si les enregistrements sont trouvés!

Cordialement
Daniel

Clouder

Messages: 160

Salut, 

J'ai trouvé ceci pour ton problème de -1

Traduction française pour la réponse de la personne qui a répondu à ce problème : 
odbc_num_rows semble être fiable pour les requêtes INSERT, UPDATE et DELETE uniquement.

Le manuel dit:
Utilisez odbc_num_rows() pour déterminer le nombre de lignes disponibles après qu'un SELECT renvoie -1 avec de nombreux pilotes.
Une façon de contourner ce problème est de faire un COUNT(*) en SQL. Voir ici pour un exemple.


Vous devez vous connecter ou créer un compte pour poster une réponse