从Zend中的表中选择完全匹配的列...?

时间:2012-01-13 10:30:56

标签: php mysql zend-framework select model

我在Zend应用程序中面临一个奇怪的问题:

我的模型是这样的:

 public function checkEmailAndProfileName($emailId, $proName) {
    $select = $this->select()
                     ->where('email_address = ?', $emailId)
                     ->where('profile_name = ?', $proName);
    $result = $this->getAdapter()->fetchRow($select);
 }

说明

假设我在数据库中有一行,电子邮件地址为“test@test.com”,个人资料名称为“profilename”。

现在,如果我将以下参数传递给模型:

$modelObj->checkEmailAndProfileName("test@test.com", "profilename");

我的工作正常。

问题

现在如果我通过:

$modelObj->checkEmailAndProfileName("test@test.com", "ProfileNAME");

然后它应该返回false,但奇怪的是它返回“test@test.com”,“profilename”行。我不想要......

任何人都可以通过告诉我做错了什么来帮助我......?

提前致谢...

1 个答案:

答案 0 :(得分:2)

你需要的是BINARY的mysql

BINARY子句中使用WHERE强制匹配二进制排序规则,在英语中表示它与字符代码匹配实际字符,而不是字符是否被视为等效。

public function checkEmailAndProfileName($emailId, $proName) {
    $select = $this->select()
                     ->where('email_address = ?', $emailId)
                     ->where('BINARY profile_name = ?', $proName);
    $result = $this->getAdapter()->fetchRow($select);
 }