2013-07-04 146 views
0

顯示「Undefined variable:display1」。 我能夠顯示while循環。 問題是$ display1已經在while循環中定義了,它必須在它中,因爲$ i增量。我想使用循環中的變量,但while循環中定義的變量

//SQL for display category name 
$query1="SELECT cat_name FROM restaurant_category WHERE rest_id={$display}"; 
$result1=mysql_query($query1); 
$rowNum1=mysql_num_rows($result1); 
//SQL for display dish information of each category 
$query3="SELECT cat_id FROM restaurant_category WHERE cat_name={$display1}"; 
$result3=mysql_query($query3); 
$display3=mysql_query($result3); 
$query2="SELECT dish_name, dish_description, dish_price FROM dish WHERE cat_id={$display3}"; 
$result2=mysql_query($query2); 
$rowNum2=mysql_num_rows($result2); 
$data=mysql_fetch_row($result2); 

while($i<$rowNum1) 
{ 
$display1=mysql_result($result1,$i,"cat_name"); 
//display category name 
    while($j<$rowNum2) 
    {//display dish information} 
} 
+0

http://www.php.net/manual/en/language.variables.scope.php –

+3

PHP是不會時間旅行爲你並執行while循環來獲取結果之前,你已經實際上運行查詢產生的結果在第一位。 –

回答

1
//SQL for display dish information of each category 
$query3="SELECT cat_id FROM restaurant_category WHERE cat_name={$display1}"; 
$result3=mysql_query($query3); 
$display3=mysql_query($result3); 

這似乎是一個錯誤,呼籲$ result3的mysql_query。它可能應該是

$display3 = mysql_fetch_row($result3) 

在這裏:在那裏

$display1 = null; 
while($i<$rowNum1) 
{ 
$display1=mysql_result($result1,$i,"cat_name"); 
//display category name 
    while($j<$rowNum2) 
    { 
     //display dish information 
    } 
} 

可能的語法錯誤。同時在while範圍之外添加$ display1。

其他職責:mysql_ *函數折舊。

+0

在外面聲明'$ display1'在PHP中沒有任何區別。他們沒有在任何地方使用它 - 至少在所示的代碼中。 – Jon

+0

OP想要時間旅行並在$ display1被賦值之前使用$ display1。 –

+0

如果您實際閱讀代碼,則會爲$ display1賦值。這就是PHP中「=」符號的含義。分配。查看諸如「顯示類別名稱」之類的註釋可能與賦值後的$ display1變量有關。 – beiller

0

$display1變量將在while循環之後定義。你看到的警告是因爲你正在分配一個你在循環中沒有使用過的變量。簡單地聲明while循環外的變量擺脫警告:

$display1 = null; 
while ($i<...