Versione php7.4 x64
apache 2.4 x64
1) Controllare nel php.ini che le estensioni di seguito, siano decommentate (quindi senza punto e virgola)
extension=odbc
extension=pdo_odbc
2) Aprire "Amministratore origine dati ODBC (64bit)" e controllare che ci siano solo driver 64bit.
Questo punto è il fulcro di tutto il discorso. I driver presenti saranno quelli utilizzati come connettore nella stringa php,
per un db .mdb andremo ad utilizzare : MS Access Database. Sono stato costretto a disinstallare i driver a 32bit, altrimenti andava in errore, quindi il driver 64bit non viene caricato se presente un driver 32bit, non so il perchè.
3) installare i driver per access a 64bit, io ho usato: accessdatabaseengine_X64.exe scaricato dal sito ufficiale microsoft.
4) riavviate il pc e quindi server apache
5) creare lo script seguente:
PUNTI FONDAMENTALI DA RISPETTARE:Codice PHP:
<?php
$dbName = $_SERVER["DOCUMENT_ROOT"]. "/prova_mde/testdb/testdb.mdb"; // Definisce percorso e nome del database";
if (!file_exists($dbName)){die("file non trovato.");}else{echo 'db trovato <br />';}
try { $db = new PDO("odbc:DRIVER={Microsoft Access Driver (*.mdb, *.accdb)}; DBQ=$dbName; Uid=; Pwd=;"); }catch(PDOException $error_mess) { echo $error_mess->getMessage(); } $sql = "select * from categorie";
// eseguo la query$result = $db->query($sql);
// ciclo tutti i risultatiwhile ($row = $result->fetch()) { print_r($row);}?>
1) $_SERVER["DOCUMENT_ROOT"]. (senza e mettendo il percorso scritto per intero è andato in errore)
2) odbcRIVER={Microsoft Access Driver (*.mdb, *.accdb) ( va scritto completo, in diverse guide scrivono fino a *.mdb, ma il
nome del connettore va scritto identico e completo)
3) ovviamente la classe pdo di php deve essere abilitata nel php.ini !!!!
ok questo è tutto, spero di aver risparmiato notti insonni ad altri.
ciao