2011-07-13 1 views
8

J'ai créé une fonction pour obtenir la valeur du dernier champ dans un tableau comme celui-ciZF: Numéro de paramètre non valide: aucun paramètre étaient liés Erreur

private function _getLastPosition ($menuId) { 
    $select = $this -> getDbTable() -> select(); 
    $select -> where("menu_id = ?", $menuId) 
      -> order('position DESC'); 
    $row = $this -> getDbTable() -> fetchRow($select); 
    if($row) { 
     return $row -> position; 
    } else { 
     return 0; 
    } 
} 

Quand je lance, je reçois

message: SQLSTATE [HY093]: numéro de paramètre non valide: aucun paramètre ne lié

S'il vous plaît aidez-moi à résoudre ce problème

Répondre

12

Cela signifie généralement que $ menuId était vide/NULL. Assurez-vous que la variable $ menuId a une valeur correcte avant de l'utiliser dans $ select .:

Vous pouvez ajouter la ligne suivante au début de votre fonction, avant d'utiliser $ menuId dans votre $ select-> where() appel:

if(empty($menuId)) 
    return 0; 

Cela retournera 0 dans le cas où $ menuId n'a pas été fourni. Si vous voulez jeter une erreur (Exception) dans ce cas, vous pouvez effectuer les opérations suivantes:

if(empty($menuId)) 
    throw new Exception("No Menu ID Provided"); 

Votre fonction complète ressemblerait à ceci:

private function _getLastPosition ($menuId) { 
    if(empty($menuId)) 
     throw new Exception("No Menu ID Provided"); 
    $select = $this -> getDbTable() -> select(); 
    $select -> where("menu_id = ?", $menuId) 
      -> order('position DESC'); 
    $row = $this -> getDbTable() -> fetchRow($select); 
    if($row) { 
     return $row -> position; 
    } else { 
     return 0; 
    } 
} 
+0

où mettre ce code. PS Je suis un débutant – mrN

+1

Oui, c'était nul. Merci, je l'ai réparé. Mais d'autres erreurs apparaissent aussi :(. – mrN

+0

Quelles sont les erreurs qui éclatent? –

Questions connexes