Domanda

Ho il seguente codice:

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

Dopo corro, ottengo il seguente errore:

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

Ho cercato di capire cosa sto facendo male. Qualsiasi aiuto?

È stato utile?

Soluzione

Il problema è la uid=? nella clausola WHERE. Come una colonna uid è in entrambe le tabelle user_id e user_details MySQL non è in grado di determinare quale colonna si vuole veramente usare. È necessario quindi fare

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

Altri suggerimenti

controllare la domanda di sql generato nel registro. Forse bisogna mettere la clausola dove, dopo il join.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top