我创建了一个函数来获取像这样
的表中最后一个字段的值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]:参数号无效:没有绑定参数
请帮我解决这个问题
答案 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;
}
}