Pregunta

Estoy trabajando en algo que fue construido en una configuración de PC usando php y una base de datos de acceso ms. Cuando transfiero la aplicación a mi entorno MAMP, obtengo

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

la línea 37 se ve así:

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

Parece que odbc no está compilado en la versión MAMP de PHP (5). También intenté usar PDO y obtuve errores similares.

¿Alguien sabe cómo solucionar esto?

¿Fue útil?

Solución

Deberá agregar un controlador ODBC como ODBC real a su máquina, es decir, si su versión PHP tuvo alguna funcionalidad ODBC, que debería tener, pero si no, tendrá que instalar una versión diferente con el soporte adecuado. He tenido buena suerte con el uso de MacPorts para instalar PHP. Pero tenga en cuenta que todavía faltan algunas funciones que puede esperar tener que escribir envoltorios para estas funciones, como por ejemplo:

  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);
        }
    }
  }
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top