PHP et database access

multimedia999

multimedia999 Le 18 mars 2019 à 18:31

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 
SkinDePewDiePie_

SkinDePewDiePie_ Le 22 mars 2019 à 12:16 (Édité le 22 mars 2019 à 12:16)

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

multimedia999 Le 22 mars 2019 à 12:44

Bonjour,

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

Cordialement
Daniel
Clouder

Clouder Le 27 mars 2019 à 14:05

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

multimedia999 Le 27 mars 2019 à 14:51

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

Clouder Le 28 mars 2019 à 16:42

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 être connecté pour poster une réponse. Se connecter ou Créer un compte