2009-10-28 4 views
0

예기치 않은 T_ELSE가이 함수에서 마지막으로 발생했습니다.작은 PHP 함수에서 예기치 않은 T_ELSE가 발생했습니다.

function QueryPeople($stringQuery, $table, $max, $cmd) { 
    $con = mysqli_connect("localhost","user","password", "host"); 

    if ($cmd == "Option1") { 
     $SearchSQL = "SELECT signature, firstname, birthdate FROM $table WHERE lower(signature) LIKE ?" . $max; 

     if ($fetchData = $con->prepare($SearchSQL)) { 
      $fetchData->bind_param("s", "%".$stringQuery."%"); 
      $fetchData->execute(); 
      $fetchData->bind_result($signature, $firstname, $birthdate); 
      $rows = array(); 
     } 
    } else if ($cmd == "Option2") { 
     $searchSQL = "SELECT signature, firstname, birthdate FROM $table WHERE birthdate = ?" . $max; 

     if ($fetchData = $con->prepare($searchSQL)) { 
      $fetchData->bind_param(":birthdate", $stringQuery); 
      $fetchData->execute(); 
      $fetchData->bind_result($signature, $firstname, $birthdate); 
      $rows = array(); 
     } 
    } 

    while ($fetchData->fetch()) { 
     $row = array(
      'signature' => $signature, 
      'firstname' => $firstname, 
      'birthdate' => $birthdate, 
      ); 
      $rows[] = $row; 
    } 
    return $rows; 
} else {     // <-- This else doesn't have an if 
    print_r($con->error); // <-- This else doesn't have an if 
}       // <-- This else doesn't have an if 
} 

왜 이런 일이 발생하는지 심각하게 이해할 수 없습니다. 두 if 블록 모두 자체 포함되어 있어야하며 둘 다 닫혀 있어야하고 잠시 동안 사용해야하며 if something if fishy? 당신은}의 두 배 가지고

답변

0

..

실제로 당신이 잊어

죄송합니다 착각 ..

 $rows = array(); 

} else if ($cmd == "Option2") 

UPDATE에

 $rows = array(); 
} 
} else if ($cmd == "Option2") 

변화 그 아래 참조

을 추가하십시오. 별도의 브라켓을 사용하면 코드를 들여 경우 제대로 모든 섹션을 폐쇄하지 않은 것을 볼 수 있습니다 ... 어딘가에있다
if($con) { 
+0

나는 몇 가지 다른 기능을 가지고 있는데, 어느 것도 requre if ($ con) {, 그래서 나는 그것이 문제라고 생각하지 않는다. –

1

...

첫 번째 if 전에 if($con)을 추가해야 할 것

:

function QueryPeople($stringQuery, $table, $max, $cmd) { 
    $con = mysqli_connect("localhost","user","password", "host"); 

    if($con){ 
     if ($cmd == "Option1") { 

      $SearchSQL = "SELECT signature, firstname, birthdate FROM $table WHERE lower(signature) LIKE ?" . $max; 

      if ($fetchData = $con->prepare($SearchSQL)) { 
       $fetchData->bind_param("s", "%".$stringQuery."%"); 
       $fetchData->execute(); 
       $fetchData->bind_result($signature, $firstname, $birthdate); 
       $rows = array(); 
      } 
     } else if ($cmd == "Option2") { 

      $searchSQL = "SELECT signature, firstname, birthdate FROM $table WHERE birthdate = ?" . $max; 

      if ($fetchData = $con->prepare($searchSQL)) { 
       $fetchData->bind_param(":birthdate", $stringQuery); 
       $fetchData->execute(); 
       $fetchData->bind_result($signature, $firstname, $birthdate); 
       $rows = array(); 
      } 

     } 

     while ($fetchData->fetch()) { 
      $row = array(
      'signature' => $signature, 
      'firstname' => $firstname, 
      'birthdate' => $birthdate, 
      ); 
      $rows[] = $row; 
     } 
     return $rows; 
    } else { 
     print_r($con->error); 
    } 
} 

어쨌든, 나는 당신이 그것에 대해 mysql_error가 필요합니다 ... 아무것도 표시됩니다 $ CON-> 오류를 생각하지 않습니다.

0

코드가 잘못되었습니다. 코드를 깔끔하게 정리하십시오. if 문을 놓쳤습니다.

<?php 
function QueryPeople($stringQuery, $table, $max, $cmd) { 
    // 

if ($cmd == "Option1") { 

    // 

    if ($fetchData = $con->prepare($SearchSQL)) { 
    /**/ 
    } 

} else if ($cmd == "Option2") { 

    // 
    if ($fetchData = $con->prepare($searchSQL)) { 
     /**/ 
    } 

} 
    while ($fetchData->fetch()) { 
     /**/ 
    } 
     return $rows; 
    } else {  //<- WHAT else? 
     print_r($con->error); 
    } 
} 
+0

당신은 내 코드를 묶어 놓았지만 로직은 똑같은데 같은 논리 순서에서 같은 수의 대괄호를 사용합니다. –

+0

댓글을 확인하십시오. 너는 불필요한 것을 가지고있다. – erenon

0

귀하의 기능이 같이 중괄호 밖에 다른 마지막은 다음과 같습니다

function funcName() { 
    // function body... 
} else { 
    // this is where your else is 
} 

당신은 소스를 강조 IDE를 사용해야은 차례로 각 괄호에 커서를 놓고 당신이 일치하는 중괄호를 볼 수 있습니다.