Domanda

Come possiamo collegare uno script PHP al file MS Access (.mdb) ?

Ho provato includendo il seguente PHP codice:

$db_path = 

Come possiamo collegare uno script PHP al file MS Access (.mdb) ?

Ho provato includendo il seguente PHP codice:

 Warning: odbc_connect() [function.odbc-connect]: SQL error: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified, SQL state IM002 in SQLConnect in C:\web\WebUpdate\index.php on line 41

Ma non è riuscito e ho ricevuto il seguente messaggio di errore:

<*>SERVER['DOCUMENT_ROOT'] . '\WebUpdate\\' . $file_name . '.mdb'; $cfg_dsn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" . $db_path; $odbcconnect = odbc_connect($cfg_dsn, '', '');

Ma non è riuscito e ho ricevuto il seguente messaggio di errore:

<*>
È stato utile?

Soluzione

Ecco un esempio per una connessione e una semplice selezione ...

<?php
$db_conn = new COM("ADODB.Connection");
$connstr = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=". realpath("./Northwind.mdb").";";
$db_conn->open($connstr);
$rS = $db_conn->execute("SELECT * FROM Employees");
$f1 =  $rS->Fields(0);
$f2 =  $rS->Fields(1);
while (!$rS->EOF)
{
    print $f1->value." ".$f2->value."<br />\n";
    $rS->MoveNext();
}
$rS->Close();
$db_conn->Close();
?> 

Altri suggerimenti

Nel nome del file, sto guardando '\ WebUpdate \' - sembra che tu abbia una barra rovesciata all'inizio alle due alla fine. Forse ti manca una barra rovesciata all'inizio?

$db_path = <*>

sostituisce le barre rovesciate con l'uso delle barre. '/ WebUpdate /'.

SERVER['DOCUMENT_ROOT'] . '\WebUpdate\\' . $file_name . '.mdb';

sostituisce le barre rovesciate con l'uso delle barre. '/ WebUpdate /'.

sembra un problema con i separatori di percorso. ISTR che devi superare le barre rovesciate non in avanti

Quanto segue funziona per me - con un file MDB nella webroot chiamato db4

    $defdir = str_replace("/", "\\", 

sembra un problema con i separatori di percorso. ISTR che devi superare le barre rovesciate non in avanti

Quanto segue funziona per me - con un file MDB nella webroot chiamato db4

<*>SERVER["DOCUMENT_ROOT"]); $dbq = $defdir . "\\db4.mdb"; if (!file_exists($dbq)) { die("Database file $dbq does not exist"); } $dsn = "DRIVER=Microsoft Access Driver (*.mdb);UID=admin;UserCommitSync=Yes;Threads=3;SafeTransactions=0;PageTimeout=5;MaxScanRows=8;MaxBufferSize=2048;FIL=MS Access;DriverId=25;DefaultDir=$defdir;DBQ=$dbq"; $odbc_conn = odbc_connect($dsn,"","") or die("Could not connect to Access database $dsn");

Non sono sicuro che si tratti di una violazione delle migliori pratiche o della sicurezza, ma vorrei lanciare questo suggerimento:

imposta una connessione ODBC e includi la password del database nelle impostazioni anticipate odbc. assegnare al conn odbc un nome DSN, quindi salvare.

nel tuo codice, imposta la connessione come:

try {
  $conn = @odbc_connect("DSNName", "", "", "SQL_CUR_USE_ODBC");
  // un and pw parameters are passed as empty strings since the DSN 
  // has knowledge of the password already.
  // 4th parameter is optional

  $exec = @odbc_exec($conn, $insert) or die ("exec error");
  echo "success!";
}
catch (Exception $e) {
  echo $e->getMessage();
} // end try catch
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top