2011-03-22 66 views
3

我正在使用PHP類連接到數據庫。我無法解決問題 - 請幫我解決這個問題。爲什麼一行代碼不能使用錯誤抑制器?

我有一個函數:

function getCampus($cm_id) //returns campus name 
{ 
    $this->query = "select cm_name from campus where cm_id = ".$cm_id.";"; 
    $rd = $this->executeQuery(); 
    @$data = $rd->fetch_assoc(); 
} 

,當我從@$data刪除@,這是行不通的。請幫助我:解釋什麼是替代方式。謝謝。

+12

定義'它不起作用' – pt2ph8 2011-03-22 13:05:19

+0

你能給我們提供你得到的錯誤嗎? PS:我不知道SQL,但是你可能不得不使一些查詢字符串部分大寫。 – 2011-03-22 13:06:43

+1

@坦納我相信關鍵字大寫是一個約定,並沒有嚴格執行。 – alex 2011-03-22 13:07:46

回答

2

@用於抑制錯誤和警告。

的@是不是你的問題

6

@是錯誤抑制運算符。用它作爲代碼行的前綴會抑制所有非致命錯誤。幾乎每次使用它都是一個糟糕的主意。

如果你刪除它得不到輸出,嘗試在你的文件的頂部或在引導文件類型添加error_reporting(E_ALL),並確保在php.inidisplay_errors = On(你也可以使用ini_set('display_errors', 'on'))。

+1

@thephpdeveloper編輯改變了我所說的一點點。現在它並沒有說使用'@'是一個壞主意,在'php.ini'中沒有提及'display_errors = on',這有時是一個問題。 – alex 2011-03-22 13:10:14

2

命令前的@符號用於忽略執行過程中發生的任何錯誤。

當您將@放在它的前面時,該行代碼仍然失敗,但您沒有看到它。試圖找出$rd->fetch_assoc()的問題是什麼。此外,查詢看起來相當錯誤。

2

@在PHP表達式中使用時禁止錯誤行爲表達。所以,機會是「它不工作」,因爲$rd->fetch_assoc()正在拋出異常。