database - 如何检查值是否在数据库中而不在 Zend 中抛出异常?

标签 database exception zend-framework

我在 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]: 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

我应该删除我的 Controller 中的 try/catch block 还是可以用其他方式来做?

最佳答案

从错误描述来看,我会说它总是会抛出异常,无论用户是否存在,因为会生成错误的 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
}

关于database - 如何检查值是否在数据库中而不在 Zend 中抛出异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33599498/

相关文章:

c - 非法浮点值

java - hibernate 断言失败: null id in entry (don't flush the Session after an exception occurs)

mysql - Zend DB Select : ORDER BY FIELD ('id' , some_array) - 怎么样?

django - 使用rest api构建简单的cms web应用程序

mysql - 查询 MySQL 表中用户还没有的项目 'scored'

php - MySQL 插入查询优化

java - 在 hibernate 中加载百万行

sql-server - SQL 如何使用表名表从表中选择特定字段

C++ 异常抛出语法

php - 具有多个 PHP 版本的 XAMPP 中的 <虚拟主机>