2009-10-28 3 views
0

J'ai un T_ELSE inattendu sur le dernier dans cette fonction.T_ELSE inattendu dans la petite fonction PHP

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 
} 

Je ne peux vraiment pas comprendre pourquoi cela se produit. Les deux blocs if devraient être autonomes, et les deux sont fermés, et ensuite il devrait aller au moment, et seulement si quelque chose semble louche?

Répondre

0

Vous avez deux de} .. voir ci-dessous

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

changement à

 $rows = array(); 

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

MISE A JOUR ..

oups erreur

effectivement vous avez oublié de ajouter

if($con) { 
+0

J'ai plusieurs autres fonctions, dont aucune ne nécessite if ($ con) {, donc je ne pense pas que ce soit le problème. –

1

Il y a un support supplémentaire quelque part ... Si vous mettez en retrait le code que vous verrez que vous n'avez pas fermé toutes les sections correctement ...

Vous auriez besoin d'ajouter un if($con) avant la première if :

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); 
    } 
} 

quoi qu'il en soit, je ne pense pas con- $> erreur montrera quoi que ce soit ... vous aurez besoin mysql_error pour cela.

0

Votre code est erroné. Organisez votre code soigneusement. Vous avez manqué une instruction 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

Oui, vous avez ligoté mon code, mais la logique semble la même, avec le même nombre de parenthèses dans la même séquence logique. –

+0

Vérifiez le commentaire. Vous avez un autre inutile. – erenon

0

Votre autre est en dehors de la fonction accolades comme:

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

Vous devez utiliser un IDE qui met en évidence la source, placez le curseur sur chaque accolade à son tour et vous verrez l'accolade correspondante.