Frage

Ich arbeite an etwas, das mithilfe von PHP und einer MS Access-Datenbank auf einem PC-Setup aufgebaut wurde. Wenn ich die App in meine MAMP -Umgebung portiere, bekomme ich

Fatal error: Call to undefined function odbc_connect() in /path/to/index.php on line 37

Zeile 37 sieht so aus:

return odbc_connect("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=myfile.mdb",
"ADODB.Connection", "", "SQL_CUR_USE_ODBC");

Es scheint, als würde ODBC nicht in die MAMP -Version von PHP (5) zusammengestellt. Ich habe auch versucht, PDO zu verwenden, und habe ähnliche Fehler.

Weiß jemand, wie ich das beheben kann?

War es hilfreich?

Lösung

Sie müssen einen ODBC -Treiber wie hinzufügen Tatsächliche ODBC Wenn Ihre Version von PHP eine ODBC -Funktionalität entspricht, die sie haben sollte, müssen Sie jedoch eine andere Version mit der entsprechenden Unterstützung installieren. Ich hatte viel Glück bei der Verwendung Macports zum Installieren von PHP. Beachten Sie jedoch, dass noch einige Funktionen fehlen, von denen Sie erwarten, dass Sie Wrapper für diese Funktionen wie SO schreiben müssen:

  if(!function_exists("odbc_fetch_array"))
  {
    function odbc_fetch_array($aResult,$anAssoc=false)
    {
        # Out of rows? Pass back false!
        if(!odbc_fetch_row($aResult)) return false;

        $theRow = array();

          # Build up array
        $theNumFields = odbc_num_fields($aResult);
        $theLimit = $theNumFields+1;
          for($i=1; $i<$theLimit; $i++)
          {
            # WARNING: Starts our index at 0, unlike standard ODBC which starts at 1
              $theRow[odbc_field_name($aResult, $i)] = odbc_result($aResult, $i);
              if(!$anAssoc) $theRow[$i-1] = $theRow[odbc_field_name($aResult, $i)];
        }
        return $theRow;
    }
  }

  if(!function_exists("odbc_fetch_assoc"))
  {
    function odbc_fetch_assoc($aResult)
    {   
        if (DIRECTORY_SEPARATOR == '/') // call local function on MACs
        {
            return odbc_fetch_array($aResult,true);
        }
        else // call built in function on Windows
        {
            return odbc_fetch_array($aResult);
        }
    }
  }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top