2014-10-29 77 views
-2

我有PHP網站致命錯誤:調用未定義的函數在PHP

if (isset($_POST['Confirm'])) { 

    $payment = $_SESSION['payment']; 
    $paymode = checkpaymentmode($payment); //get paymentmode code 
    $mtxcd = getmtxcd(); //merchant transaction code 


    if (!function_exists('checkpaymentmode')) { 
     function checkpaymentmode($payment) { 
      if ($payment == 'Amex') { 
       return "A"; 
      } elseif ($payment == 'Direc-Debit') { 
       return "D"; 
      } else { 
       return "C"; 
      } //assume the rest are visa/master 
     } 

    } 

} 

此代碼是第一部分確認頁面的支付部下面的代碼。確認後,執行這些代碼。在這個頁面中使用一些其他功能以及這個功能。我評論這一個,並嘗試與其他人,所有功能都有同樣的錯誤。

Fatal error: Call to undefined function checkpaymentmode() in line33..

任何解決方案??

+0

從邏輯上逐行思考。 *在調用它之後檢查函數是否存在。還請閱讀錯誤消息。它實際上是告訴你如何解決這個問題。通過定義函數checkpaymentmode(),這實際上是一個很大的提示:) – 2014-10-29 06:33:40

回答

4

要調用的定義之前的函數

$paymode = checkpaymentmode($payment); //get paymentmode code 

添加功能的函數被調用像以前一樣,

if (!function_exists('checkpaymentmode')) { // define the fucntion 
     function checkpaymentmode($payment) { 
      if ($payment == 'Amex') { 
       return "A"; 
      } elseif ($payment == 'Direc-Debit') { 
       return "D"; 
      } else { 
       return "C"; 
      } //assume the rest are visa/master 
     } 

    } 

if (isset($_POST['Confirm'])) { 

    $payment = $_SESSION['payment']; 
    $paymode = checkpaymentmode($payment); //get paymentmode code 
    $mtxcd = getmtxcd(); //merchant transaction code 
    -------------------------- 
} 
2

你打電話定義之前的功能,您需要將您的IF子句定義函數頂端,同樣

if (isset($_POST['Confirm'])) { 
    if (!function_exists('checkpaymentmode')) { 
     function checkpaymentmode($payment) { 
      if ($payment == 'Amex') { 
       return "A"; 
      } elseif ($payment == 'Direc-Debit') { 
       return "D"; 
      } else { 
       return "C"; 
      } //assume the rest are visa/master 
     } 

    } 

    $payment = $_SESSION['payment']; 
    $paymode = checkpaymentmode($payment); //get paymentmode code 
    $mtxcd = getmtxcd(); //merchant transaction code 

} 
0

您在實現它之前調用該函數。移位這些代碼

$payment = $_SESSION['payment']; 
    $paymode = checkpaymentmode($payment); //get paymentmode code 
    $mtxcd = getmtxcd(); //merchant transaction code 

下面的功能,它應該工作。

相關問題