2013-08-28 108 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