Database 如何检查值是否在数据库中,而不在Zend中引发异常?

Database 如何检查值是否在数据库中,而不在Zend中引发异常?,database,exception,zend-framework,Database,Exception,Zend Framework,我在Zend controller中有一个注册操作,我想确保给定的用户名不在数据库中 $tUser = $userMapper->getDbTable(); $select = $tUser->select() ->from(array('u'=>'users')) ->where('u.user_username = ' . $value); $row = $tUser->fetchRow($s

我在Zend controller中有一个注册操作,我想确保给定的用户名不在数据库中

$tUser = $userMapper->getDbTable();
$select = $tUser->select()
                ->from(array('u'=>'users'))
                ->where('u.user_username = ' . $value);
$row = $tUser->fetchRow($select);
不幸的是,当我只想检查$row是否为null并继续编写代码时,这段代码抛出异常

SQLSTATE[42S22]:未找到列:“where子句”中的1054未知列“admin”,查询是:从
users
AS
u
where(u.user\u username=admin)限制1中选择
u
*


我应该删除控制器中的try/catch块,还是可以用另一种方式执行?

根据错误描述判断,无论用户是否存在,它都会抛出异常,因为会生成错误的SQL查询。尝试将
$value
作为第二个参数传递到
的where
,如下所示:

$tUser = $userMapper->getDbTable();
$select = $tUser->select()
                ->from(array('u'=>'users'))
                ->where('u.user_username = ?', $value);
$row = $tUser->fetchRow($select);
if(!$row) {
    // user doesn't exist
} else {
    // user exists
}
然后,您将检查用户是否存在如下情况:

$tUser = $userMapper->getDbTable();
$select = $tUser->select()
                ->from(array('u'=>'users'))
                ->where('u.user_username = ?', $value);
$row = $tUser->fetchRow($select);
if(!$row) {
    // user doesn't exist
} else {
    // user exists
}
试试看{
$tUser=$userMapper->getDbTable();
$select=$tUser->select()
->from(数组('u'=>'users'))
->其中('u.user_username=?',$value);
$row=$tUser->fetchRow($select);
}捕获(Zend_Db_异常$e){
回音“;打印费($e);
}

非常感谢。我必须更准确地阅读错误消息;)