2013-08-28 109 views
-7

所以我有這兩個存儲過程。第一個工作正常,但第二個不會。它仍然執行第一個。我試着評論其他人,除了第二個存儲過程,它工作正常。我在這裏做錯了什麼?如果elseif語句不工作php

if($view='group'){ 
$sql = "CALL sp_edit_biochem_group('$item_group_ID','$item_group_code','$item_group_desc','$item_group_qty','$uom','$location','$inv_by','$as_of_date')"; 
} 
elseif ($view='breakdown'){ 
$sql = "CALL sp_edit_biochem_breakdown('$status','$as_of_date','$serial_no','$item_breakdown_ID')"; 
} 
+5

經典:使用'=='而不是'='。 '='賦值並且'=='比較值。另外請看「[Yoda條件](http://en.wikipedia.org/wiki/Yoda_Conditions)」以避免這些問題。 – insertusernamehere

+0

如果您使用'=='而不是'='? – Floris

+0

使用'=='而不是'=' – ashley

回答

2

您正在使用的比較操作==的賦值操作符=代替。

+0

我感到很不安,因爲我幾乎將同一個字符串作爲註釋輸入,與您輸入答案的時間完全相同。你在享受我腦海中的景色嗎? :D – andrewsi

+0

@andrewsi有可怕的東西在那裏,肯定... =) – Crontab

2

您正在使用賦值運算符(=)而不是相等運算符(==)。嘗試:

if($view=='group'){ 
    $sql = "CALL sp_edit_biochem_group('$item_group_ID','$item_group_code','$item_group_desc','$item_group_qty','$uom','$location','$inv_by','$as_of_date')"; 
} 
elseif ($view=='breakdown'){ 
    $sql = "CALL sp_edit_biochem_breakdown('$status','$as_of_date','$serial_no','$item_breakdown_ID')"; 
} 
2

這就是爲什麼我們建議使用理由:

if ('group' == $view) { 

如果你做出像你這樣的一個錯誤(使用=而不是==),你的代碼看起來像這:

if ('group' = $view) { 

你會得到一個致命的錯誤,並通知+立即修復問題。

+0

我從來沒有見過這個建議,但它是有道理的(其中一方是恆定的)。你能引用一個資料來源嗎? –

+0

一秒鐘,我認爲它在PSR-2中:D –

+1

@AdrianWragg這就是所謂的尤達條件。這裏有一些關於[Wikipedia]的文字(http://en.wikipedia.org/wiki/Yoda_Conditions) – insertusernamehere