2017-06-21 28 views
-1

我有下面的代碼,它讓我瘋狂。PHP和MySQL的調試問題[簡]

function getText($id){ 
global $mysqli, $table_name; 

$sql = "SELECT `text` FROM $table_name WHERE `id` = $id;"; 
if($result = $mysqli->query($sql)){ 
    $row = $result->fetch_array(); 
    print $row["text"] . "<br>"; 
    return $row["text"]; 
} else { 
    printf("<br>" . $mysqli->error); 
} 

$result->free(); 
} 

我得到的錯誤:致命錯誤:不能重新聲明在...的getText()上線50

我使用這些在線錯誤檢查器中的一個還試圖和它打印出來了同樣的錯誤當我只將這個功能粘貼到他們的文本框中。 https://phpcodechecker.com/

任何人都可以幫助我嗎?

+0

你有2個或多個功能使用相同的名稱('getText') – modsfabio

+0

我不認爲是問題..我連複製粘貼只是這個功能到這個https://phpcodechecker.com/並打印出相同的錯誤 – IchHabsDrauf

+1

然後爲'getText'選擇另一個名稱,您將看到 – modsfabio

回答

3

gettext的是PHP 的內置函數(讀:http://php.net/manual/en/function.gettext.php

這意味着,你不能使自己的函數具有相同的名稱。

將您的函數的名稱更改爲其他名稱,它將起作用。在PHP

+1

這工作。我將它命名爲getTheText()xp。一旦它允許我將它標記爲正確的答案。 – IchHabsDrauf

1

功能是不區分大小寫

你可能已經用相撞內置定位功能gettext()。即使情況並非如此,爲了便於攜帶,您的功能應該重新命名。

+0

剛剛意識到這一點。謝謝 – IchHabsDrauf

0

我認爲這是因爲getText是PHP中的內置函數,在你的函數中也有很少的語法錯誤。

function getMyText($id){ 
global $mysqli, $table_name; 
$sql = "SELECT `text` FROM $table_name WHERE `id` =".$id; 
$result = $mysqli->query($sql); 
    if($result){ 
    $row = $result->fetch_array(); 
    print $row["text"] . "<br>"; 
    return $row["text"]; 
} else { 
    printf("<br>" . $mysqli->error); 
} 
    $result->free(); 
} 
+0

請不要將函數的名字改爲'getText1()'或類似的東西,它使得它成爲你的代碼的完整地獄,並且一眨眼之間就會被拋棄。將其更改爲更具描述性的內容。 – FMashiro

+0

php允許你在你的字符串中使用變量而不必分割它,所以你也可以做''WHERE id = $ id「'並且它不會拋出錯誤 – IchHabsDrauf

+1

好的我會記住@IchHabsDrauf – SYB