daniel
daniel

Reputation: 1222

Integrity constraint violation in Zend_db

I have the following code:

$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);

After I run, I get the following error:

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

I've been trying to figure out what I'm doing wrong. Any help?

Upvotes: 2

Views: 5085

Answers (2)

Stefan Gehrig
Stefan Gehrig

Reputation: 83632

The problem is the uid=? in your WHERE clause. As a uid column is in both tables user_id and user_details MySQL cannot determine which column you really want to use. You must therefore do

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

Upvotes: 6

erenon
erenon

Reputation: 19118

check the generated sql query in the log. Maybe you have to put the where clause after the join.

Upvotes: -1

Related Questions