2013-07-04 149 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<...