2013-11-25 134 views
0

我有一個函數的問題,它從第一個if()語句而不是函數中的第二個if()語句返回數據,請參見下文。函數返回不正確的響應

function training($type,$tid) 
{ 
if($type = "id") { 
    $query = mysql_query("SELECT * FROM trainroster WHERE DATE = CURDATE()"); 
    if (mysql_num_rows($query) == 1) { 
      $array = mysql_fetch_array($query); 
      $id=$array['TID']; 
      } 
    else { $id = "1"; } 
return $id; 
} 
else if($type = "topic"){ 
    $query = mysql_query("SELECT * FROM trainroster WHERE TID='$tid'"); 
    $array = mysql_fetch_array($query); 

    $topic = $array['TOPIC']; 
    return $topic; 
} 
} 

這是被稱爲像這樣:

$training = $connection->training("topic",$row['TID']); 

當函數被調用它返回的$ id作爲反對$話題,即使我設置$類型變量「主題」。

任何幫助非常感謝,歡呼!

+0

'mysql_ *'函數不再維護**,不應該用在任何新的代碼庫中。它正逐漸被淘汰,轉而採用更新的API。相反,您應該使用[PDO](http://php.net/pdo)或[MySQLi]([**準備好的語句**])(https://www.youtube.com/watch?v=nLinqtCfhKY)( http://php.net/mysqli)。 –

回答

1

使用「==」,而不是「=」比較

「=」是一個分配操作員,如果你用它來比較,它總是返回true。這就是爲什麼你總是得到id。

if($type == "id") { 
.... 
if($type == "topic"){ 
.... 
+0

當然!我應該知道,我剛剛創建了另一個使用==進行比較的函數。測試和工作:) – Anthony

0

看看你的if語句:

if($type = "id") 

if($type = "topic") 

你分配,不進行比較。它們應該是:

if($type == "id") 

if($type == "topic") 
0

if($type = "id")將字符串「id」賦值給$ type並返回「id」,該值爲true。

正如Harish Singh所說,你必須寫if($type == "id")

防止此錯誤的一種方法是編寫if("id" == $type),如果您忘記了一個「=」,則會導致錯誤。