كيف يمكنني إضافة برنامج تشغيل ODBC إلى بيئة MAMP؟

StackOverflow https://stackoverflow.com/questions/223165

  •  03-07-2019
  •  | 
  •  

سؤال

أنا أعمل على شيء تم بناؤه على إعداد كمبيوتر باستخدام PHP وقاعدة بيانات Access MS. عندما أقوم بتنفيذ التطبيق على بيئتي المهنية ، أحصل على

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

السطر 37 يبدو هكذا:

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

يبدو أن ODBC لم يتم تجميعه في إصدار MAMP من PHP (5). حاولت أيضًا استخدام PDO ، وحصلت على أخطاء مماثلة.

أي شخص يعرف كيفية إصلاح هذا؟

هل كانت مفيدة؟

المحلول

ستحتاج إلى إضافة برنامج تشغيل ODBC مثل الفعلي ODBC إلى جهازك ، هذا إذا كان لدى نسختك من PHP أي وظيفة ODBC تم الامتثال لها ، والتي يجب أن يكون لها ، ولكن إذا لم يكن ذلك ستحتاج إلى تثبيت إصدار مختلف مع الدعم المناسب. لقد حظيت بالتوفيق في استخدامه macports لتثبيت PHP. ولكن لاحظ أنه لا يزال هناك بعض الوظائف المفقودة التي قد تتوقع أن تضطر إلى كتابة أغلفة لهذه الوظائف مثل ذلك:

  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);
        }
    }
  }
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top