2012-01-25 92 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']))語句之前。