2011-06-10 58 views
7

我有一個調用PHP腳本的JavaScript函數。到現在爲止還挺好。一個問題發生時,我嘗試這樣做:PHP錯誤 - 無法重新聲明函數

$hike_id = mysql_real_escape_string($_GET['hike_id']); 

當我輸入我的連接文件,它給了我,在該文件中的功能已經定義的錯誤和錯誤是這樣的:

[Fri Jun 10 12:34:43 2011] [error] [client 75.24.105.18] PHP Fatal error: Cannot redeclare hassuspicioushackerstrings() (previously declared in /home/webadmin/comehike.com/html/connect.php:16) in /home/webadmin/comehike.com/html/connect.php on line 40 

它所指的錯誤是連接腳本中的函數。

但如果我刪除

include '../connect.php'; 

然後,它會告訴我,我不能使用mysql_real_escape_string功能。所以我有點卡在不能使用任何一個選項。

+0

您似乎在包含聲明'hassuspicioushackerstrings()'的文件。我不認爲這是與mysql_real_escape_string() – 2011-06-10 16:45:21

回答

11

嘗試include_once '../connect.php';它會確保你只包括一次這個文件

+0

的include_once事情做的伎倆 - 謝謝! – Genadinik 2011-06-10 16:50:53

+1

@Genadinik您還應該閱讀@Fosco寫關於您的錯誤的內容。試着通過重做你的程序邏輯來修復你的錯誤,'include_once'和'required_once'不是很理想,因爲它們都會消耗寶貴的系統資源來判斷文件是否已經被包含/需要。 – afarazit 2011-06-10 16:58:22

+0

在某些情況下,在其中一個子文件php文件中可能會有一個額外的include語句,那就是我發現我的錯誤的地方。 incude_once在這些情況下不起作用。 – 2016-07-20 02:56:05

3

看看你的文件和包括...你是宣稱功能的兩倍,這是錯誤。它與MySQL,數據庫連接或mysql_real_escape_string()無關。

I.e.您可能包含文件A和文件B,但文件A已經包含文件B ...您可以確定包含錯誤的位置,或使用include_oncerequire_once來防止其重新加載。

2

可能您包含該文件多次。使用require_once而不是include。

1

你不能使用mysql_real_escape_string(),因爲connect.php很可能會建立你的數據庫連接。我的猜測是有另一個包含(也許'functions.php')具有相同的功能。

你可能有這樣的事情:

功能hassuspicioushackerstrings($輸入){}

在connect.php

,您可以添加if(!function_exists('hassuspicioushackerstrings')) {}周圍的功能。

0

永遠不要在另一個函數內創建或聲明一個函數。但是你仍然可以在函數內使用其他函數。例如,以下內容不正確

function addition($a, $b) 
{ 
    function subtraction(){ 
    } 
    return $a+$b; 
}