violazione del vincolo di integrità in Zend_Db
-
12-09-2019 - |
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?
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