ZF:参数号无效:没有参数绑定错误

时间:2011-07-13 13:34:25

标签: zend-framework

我创建了一个函数来获取像这样

的表中最后一个字段的值
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;
    }
}

当我运行它时,我得到了

  

消息:SQLSTATE [HY093]:参数号无效:没有绑定参数

请帮我解决这个问题

1 个答案:

答案 0 :(得分:12)

这通常意味着$ menuId为空/ NULL。确保$ menuId变量在$ select。中使用之前具有正确的值:

您可以在函数开头添加以下行,然后在$ select-> where()调用中使用$ menuId:

if(empty($menuId))
   return 0; 

如果没有提供$ menuId,则返回0。如果您想在这种情况下抛出错误(异常),则可以执行以下操作:

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

您的完整功能如下所示:

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