PHP et database access
- Accueil
- Forum
- Programmation
- PHP
- PHP et database access
multimedia999 Le 18 mars 2019 à 18:31 (Édité le 1 janvier 1970 à 01:00)
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_ Le 22 mars 2019 à 12:16 (Édité le 22 mars 2019 à 12:16)
<?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 Le 22 mars 2019 à 12:44 (Édité le 1 janvier 1970 à 01:00)
Merci pour la réponse, mais celle-ci est pour une db "MySQL". Ma question est pour une database "Access"!
Cordialement
Daniel
Clouder Le 27 mars 2019 à 14:05 (Édité le 1 janvier 1970 à 01:00)
<?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 Le 27 mars 2019 à 14:51 (Édité le 1 janvier 1970 à 01:00)
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 Le 28 mars 2019 à 16:42 (Édité le 1 janvier 1970 à 01:00)
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.