2012-04-09 34 views
0

好吧,所以我創建了一個新的支持票據系統,但在我的票據搜索頁面中,它不斷給我提供像197行中的未定義變量的錯誤。奇怪的是,變量是在它上面定義的。請幫助我在這裏是一個代碼的鏈接:http://pastebin.com/AMzRLDK4While Loop在外部未定義時設置變量的問題。

我想讓我可以查看支持票已打開並將它們標記爲已讀或更改狀態並回復它們通過下午系統。我昨晚讓它工作,但是我必須改變一些東西而沒有意識到它的效果。

在此先感謝, 馬特。

+0

它說什麼變量是未定義的? – Chris 2012-04-09 14:02:49

+0

$ Sname和$ Sid – 2012-04-09 14:08:48

回答

2

看起來這是您第一次在代碼中使用$ Sid或$ Sname。它們在一段代碼塊內,這意味着它們是唯一存在的地方。另外,我認爲你想使用mysql_fetch_assoc()。它實際上將使用列名稱而不是索引。 (也可能是最好關閉使用較新的MySQLi有以下幾個原因)

while($raw = mysql_fetch_array($ret)){ $Sid = $raw['id']; $Sname = $raw['username']; } 

快速修復:

$Sid = null; //or 0 whichever makes sense for you 
$Sname = null; //or '' 
while($raw = mysql_fetch_assoc($ret)){ $Sid = $raw['id']; $Sname = $raw['username']; } 

然而,隨着MySQL查詢的限制1,你可以刪除,而所有一起

$raw = mysql_fetch_assoc($ret); 
if($raw === false) 
{ 
    //Error Condition 
} 

$Sid = $raw['id']; 
$Sname = $raw['username']; 
+0

你推薦我做什麼最好的修復?以及我在哪一行插入代碼? – 2012-04-09 14:27:30

+0

@MattMyers爲了解決這個問題,未定義的變量,我會使用沒有'while'的第二個修復。您將替換第188行的代碼。除此之外,特別是因爲這是一個登錄腳本,請查看MySQLi語句。他們會走很長一段路,以確保您的數據是乾淨的進入您的查詢。 http://www.php.net/manual/en/class.mysqli-stmt.php – Chris 2012-04-09 14:34:33

+0

非常感謝您的幫助,但我確實偏離了您的代碼示例(快速修復)一點點,因爲它不是顯示由提交的用戶名,而不是null;在$ Sid和$ Sname之後,我使用了mysql抓取memid;和用戶名;我將null更改爲memid,因爲它也不允許我單擊輸出的用戶名,也不會將我帶到成員頁面。但現在效果很好,非常感謝:D – 2012-04-10 00:57:20