2012-01-25 79 views
1
<?php 
    $username="xxx"; 
    $password="xxx"; 
    $database="mobile_app"; 

    mysql_connect('localhost',$username,$password); 

    @mysql_select_db($database) or die("Unable to select database"); 

    foreach (array('courseid','roomChosen') as $varname) { 
     $$varname = (isset($_POST[$varname])) ? $_POST[$varname] : ''; 
    } 

    if (isset($_POST['prequestion'])) { 
     $roomquery = " 
        SELECT Room 
        FROM Room 
        WHERE 
        (Room = '".mysql_real_escape_string($roomChosen)."') 
        "; 

     $roomnum = mysql_num_rows($roomresult = mysql_query($roomquery)); 
     mysql_close(); 

     if($roomnum ==0){ 
      $msg = "This Room is Invalid '$roomChosen'"; 
     } 
     else { 
      $msg = "This Room is Valid '$roomChosen'"; 
     } 
    } 
    $d = array("msg" => $msg); 
    echo json_encode($d); 
?> 

在这行代码的底部附近:这个PHP通知是什么意思?

$d = array("msg" => $msg); 

我收到此通知:

注意:未定义的变量:味精/u08877587/Mobile_app/room2.php上线46 {“msg”:null}

如何解决此通知?

+7

那'$ msg'变量没有定义:P – PeeHaa

+0

像错误信息的最高审计机关$味精变量尚未设置(未定义)。在定义$ d数组之前,定义一个$ msg变量,例如。 :$ msg ='msg现在定义'; – Tudor

回答

1

您应该将$d = array("msg" =>$msg)if(isset($_POST['prequestion'])) { }

即:

if (isset($_POST['prequestion'])) 
{ 
    if($roomnum ==0) 
    { 
     $msg = "This Room is Invalid '$roomChosen'"; 
    } 
    else 
    {    
     $msg = "This Room is Valid '$roomChosen'"; 
    } 


    $d = array("msg" => $msg); 
    echo json_encode($d);  
} 
6

在一些error_reporting模式下,如果您使用尚未定义的变量,PHP将为您提供一个提示。你可以这样做:

if(isset($msg) { 
    $d = array("msg" => $msg); 
} 

或:

$d = array("msg" => @$msg); 

或调整error_reporting配置不是沿着E_NOTICE传递消息。不过,有时候这个通知会帮助你发现你做了一些类似拼错变量的事情。

+0

这将解决问题,但不检查它是否有提交的$ _POST变量,它应该封装整个函数(或本例中的页面) – Relic

+0

这已修复了错误,但像Relic已经提到它不会不检查是否有提交的$ _POST变量,这是为什么? – user1170029

+0

我回答了“我如何解决此通知?”位。那时候,你的代码没有嵌入到帖子中。 – ceejayoz

0

你永远不会输入if (isset($_POST['prequestion']))块,所以$ msg没有被设置。如果这是一个错误,请尝试修复以解决您的问题。否则,你可以这样做:

if ($msg) { 
    $d = array("msg" => $msg); 
} 

这将确保$msg你要使用它之前就存在。或者将$msg设置为空字符串或在if (isset($_POST['prequestion']))语句之前。