2011-08-29 111 views
1

我找不到任何錯誤......這應該工作正確嗎?php如果條件

function ConfirmedNumber() 
{ 
$rs = mysql_query("CALL ConfirmedNumber('" , $_SESSION['UserID'] . "',@Active)"); 
    while ($row = mysql_fetch_assoc($rs)) 
    { 
     if ($row['Active'] = 1) 
     { 
     return true; 
     } 
    } 
return false; 
} 

假設存儲過程返回值爲'1'的單行,那麼我可以調用這樣的函數嗎?

if (ConfirmedNumber()) 
{ 
//do some stuff. 
} 
+1

'$行[ '主動'] = 1'應該是'$行[ '主動'] === 1' – adlawson

+0

是的,'$行['Active'] = 1'將始終爲真,因爲他可以將1賦給$ row ['Active'],因此返回true。 –

+0

@adlawson:'$ row ['Active'] === 1' ---將始終爲假 – zerkms

回答

2

爲了擴大對我的評論:

if ($row['Active'] = 1)應該if ($row['Active'] == 1)正常工作。

如果你想避免意外在未來這樣做,你可以寫你的if語句是這樣的:

if (1 == $row['Active']) 

這樣一來,你可以不小心使用=作爲PHP將拋出一個致命錯誤。您可以使用完整的答案閱讀更多關於Comparison Operators at PHP.net


Comment below

到存儲過程的調用...線$ RS =請求mysql_query( 「CALL ConfirmedNumber('」 $ _SESSION [ 'UserID']。「',@ Active)」);有一個逗號,而不是最初的帖子。

+0

從mysql檢索的所有字段都有哪些類型? – zerkms

+0

公平點,更新。 – adlawson

+0

@adlawson這仍然不工作的原因。難道是我的函數調用不好? – Kulingar

1

您忘記了您的IF語句中的操作符。它改成這樣:

if ($row['Active'] == 1) 

,甚至更短的

if ($row['Active']) 
+0

等價運算符沒有任何區別。我對該功能的調用是否正確?或者你指的是調用funciton的if語句?人力資源管理。 – Kulingar

+0

不確定其他標籤是否有效。 :x – Kulingar

0

它可以是這樣的

function ConfirmedNumber($id) 
    { 
    $rs = mysql_query("CALL ConfirmedNumber('" . $id . "',@Active)"); 
     while ($row = mysql_fetch_assoc($rs)) 
     { 
      if ($row['Active'] == 1) 
      { 
      return true; 
      } 
     } 
    return false; 
    } 
ConfirmedNumber($_SESSION['UserID']); 
+0

無需浪費將會話變量傳遞給函數的帶寬。不妨在函數內部調用它。另外這不是我的問題。 :( – Kulingar

+0

的條件必須是這樣的$ row ['Active'] == 1 – Marco