如何检查值是否在数据库中而不在 Zend 中抛出异常?
How to check whether value is in database without throwing an exception in Zend?
我在 Zend 控制器中有一个注册操作,我想确保给定的用户名不在数据库中。
$tUser = $userMapper->getDbTable();
$select = $tUser->select()
->from(array('u'=>'users'))
->where('u.user_username = ' . $value);
$row = $tUser->fetchRow($select);
不幸的是,当我只想检查 $row 是否为 null 并继续编写我的代码时,这段代码抛出异常 。
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'admin' in 'where clause', query was: SELECT u
.* FROM users
AS u
WHERE (u.user_username = admin) LIMIT 1
我应该删除控制器中的 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
}
try {
$tUser = $userMapper->getDbTable();
$select = $tUser->select()
->from(array('u'=>'users'))
->where('u.user_username = ?', $value);
$row = $tUser->fetchRow($select);
} catch (Zend_Db_Exception $e) {
echo "<pre>";print_r($e);
}
我在 Zend 控制器中有一个注册操作,我想确保给定的用户名不在数据库中。
$tUser = $userMapper->getDbTable();
$select = $tUser->select()
->from(array('u'=>'users'))
->where('u.user_username = ' . $value);
$row = $tUser->fetchRow($select);
不幸的是,当我只想检查 $row 是否为 null 并继续编写我的代码时,这段代码抛出异常 。
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'admin' in 'where clause', query was: SELECT
u
.* FROMusers
ASu
WHERE (u.user_username = admin) LIMIT 1
我应该删除控制器中的 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
}
try {
$tUser = $userMapper->getDbTable();
$select = $tUser->select()
->from(array('u'=>'users'))
->where('u.user_username = ?', $value);
$row = $tUser->fetchRow($select);
} catch (Zend_Db_Exception $e) {
echo "<pre>";print_r($e);
}