2012-04-08 130 views
0

我正在嘗試執行一些php代碼,但似乎並未按要求的順序執行。下面的代碼片段: -PHP代碼執行順序

if(!empty($_POST['val'])) 
       { 
        $val = Get_Val($sid, $_POST['val'], $lnk); 
        if($val) 
        { 
         echo "<br />Here Value : " . $val; 
        } 
        else 
        { 
         echo "Invalid Value."; 
        } 
       } 

當我在功能Get_Val(返回之前呼應值),給出了一些一套有效參數,這意味着如果條件是真正數,但是當我執行Else部分正在執行的代碼。儘管輸出按順序顯示,但它們並不一致。我希望我已經明確了這個問題。 任何數量的幫助表示讚賞。謝謝! 這裏是Get_Val()函數: -

 
function Get_Val($sid, $a, $link) 
{ 
    //check is name is already present in table 
    $query = "SELECT val FROM store WHERE name = \"" . $a . "\""; //val is auto incremented in sql 
    $result = mysql_query($query ,$link) or die(mysql_error()); 
    if($result) 
    { 
     $count = mysql_num_rows($result); 
     if($count == 0) //insert name and the return val 
     { 
      $query_x = "INSERT INTO store(name) VALUES('" . $a . "')"; 
      $result = mysql_query($query_x ,$link) or die(mysql_error()); 
      if($result)//If new name inserted then return the 'val' 
      { 
      Get_Val($sid, $a,$link); 
      } 
     } 
     else 
     { 
      $row = mysql_fetch_assoc($result); 
      echo "Val in Get_Val : " . $row['val']; 
      return $row['val']; 
     } 
    } 
    else 
    { 
     echo "Unexpected Error Occured...!!!"; 
     exit(0); 
    } 
}
+0

'$ val'的值是什麼? – 2012-04-08 17:23:11

+3

上傳'Get_Val()'的代碼' – Starx 2012-04-08 17:23:23

+0

也可以嘗試'if(isset($ val))'。你確定'Get_Val()'返回一個值嗎? – ngen 2012-04-08 17:24:54

回答

0

什麼是這個:

if($count Val in Get_Val : " . $row['val']; 
    return $row['val']; 
} 

你確定$ _ POST [ 'VAL']是存儲在一個數據庫中的有效的價值?

+0

我已經糾正它,我無法第一次正確發佈它。 – 2012-04-08 17:48:06

+0

插入新的值後,你不應該去遞歸,你浪費cpu週期和無用的sql查詢,只是返回最後插入的ID – 2012-04-08 17:52:23

+0

這是一種情況,因爲我沒有手動插入它,它會自動增加,我只是插入'名稱'和'val'會自動更新。即使我試圖獲得表中最後一個'val',它也需要另一個SQL查詢。所以,不能刪除查詢。請幫助我獲得新插入'val'而不使用遞歸。如果我刪除遞歸併使用另一個查詢呢? – 2012-04-08 18:01:52

0

如果$ count == 0,則Get_Val不返回值。在遞歸調用之前添加return語句。像這樣:

... 
if($count == 0) //insert name and the return val 
{ 
    $query_x = "INSERT INTO store(name) VALUES('" . $a . "')"; 
    $result = mysql_query($query_x ,$link) or die(mysql_error()); 
    if($result)//If new name inserted then return the 'val' 
    { 
     return Get_Val($sid, $a,$link); 
    } 
} 
...