2013-11-25 5 views
0

함수의 2 차 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; 
} 
} 
다음과 같이 호출되는

:

함수가 $ 주제에 반대가 나는 $ 유형 변수를 설정하고있어 경우에도 $ id를 반환 것이라고
$training = $connection->training("topic",$row['TID']); 

에 "항목 ".

도움을 주시면 감사하겠습니다. 당신이 비교를 사용하는 경우

을 비교하는 대신 '='의

+0

mysql_ * 함수는 더 이상 ** 유지되지 않으므로 새로운 코드베이스에서 사용해서는 안됩니다. 새로운 API를 위해 단계적으로 제거되고 있습니다. 대신 [PDO] (http://php.net/pdo) 또는 [MySQLi]와 함께 [** prepared statements **] (https://www.youtube.com/watch?v=nLinqtCfhKY)를 사용해야합니다. http://php.net/mysqli). –

답변

1

사용 '=='는 '=', 할당 연산자, 항상 true를 돌려줍니다. 그래서 당신은 항상 이드를 얻고 있습니다. 귀하의 경우 문에서

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

물론! 나는 그것을 알아야했다, 나는 방금 ==를 사용하여 비교할 다른 함수를 만들었을 것이다. 테스트 및 작동 :) – Anthony

0

봐 :

if($type = "id") 

if($type = "topic") 

당신은 비교하지 할당하고 있습니다. 그들은해야합니다 :

if($type == "id") 

if($type == "topic") 
0

if($type = "id") 사실이다 $ 유형 및 반환 "ID"에 문자열 "ID"를 할당합니다.

Harish Singh이 언급 한대로 if($type == "id")을 작성해야합니다.

이 오류를 방지하려면 if("id" == $type)을 작성하여 "="을 잊어 버리면 오류가 발생합니다.

관련 문제