Zend_db中的完整性约束违规

时间:2009-06-07 19:15:19

标签: zend-framework zend-db inner-join mysql-error-1052

我有以下代码:

$selectColumns= array('user_id.user_email',
                    'user_details.first_name', 
                    'user_details.last_name', 
                    'user_details.zip', 
                    'user_details.store_id');
$result = $handle->select()->from('user_id')
                           ->where('uid=?', $uid)
                           ->columns($selectColumns)
                           ->join('user_details', 'user_id.uid = user_details.uid')
                           ->query(ZEND_DB::FETCH_OBJ);

运行后,我收到以下错误:

Uncaught exception 'Zend_Db_Statement_Exception' with message 'SQLSTATE[23000]: '
Integrity constraint violation: 1052 Column 'uid' in where clause is ambiguous

我一直想弄清楚我做错了什么。 有什么帮助吗?

2 个答案:

答案 0 :(得分:6)

问题在于uid=?子句中的WHERE。由于uid列在user_iduser_details表中,因此MySQL无法确定您真正想要使用的列。你必须这样做

// [...]
->where('user_id.uid=?', $uid)
// [...]

答案 1 :(得分:-1)

检查日志中生成的sql查询。也许你必须在加入后放置where子句。