ZF: Invalid parameter number: no parameters were b

2019-01-15 19:14发布

问题:

I created a function to get the a value of last field in a table like this

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

When I run it, I get

Message: SQLSTATE[HY093]: Invalid parameter number: no parameters were bound

Please help me fix this

回答1:

It typically means that $menuId was empty/NULL. Ensure that $menuId variable has a proper value before using it in $select.:

You could add the following line at the beginning of your function, before you use $menuId in your $select->where() call:

if(empty($menuId))
   return 0; 

This will return 0 in case no $menuId was provided. If you want to throw an error (Exception) in such case, you could do the following:

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

Your complete function would look like this:

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