Integritätseinschränkungsverletzung in Zend_DB
-
12-09-2019 - |
Frage
Ich habe den folgenden 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);
Nachdem ich laufe, bekomme ich folgende Fehlermeldung:
Uncaught exception 'Zend_Db_Statement_Exception' with message 'SQLSTATE[23000]: '
Integrity constraint violation: 1052 Column 'uid' in where clause is ambiguous
Ich habe versucht, herauszufinden, was mache ich falsch. Jede Hilfe?
Lösung
Das Problem ist die uid=?
in Ihrer WHERE
Klausel. Als uid
Spalte in beiden Tabellen user_id
und user_details
MySQL kann nicht bestimmen, welche Spalte Sie wirklich verwenden möchten. Sie müssen daher tun
// [...]
->where('user_id.uid=?', $uid)
// [...]
Andere Tipps
überprüfen Sie die generierten SQL-Abfrage im Protokoll. Vielleicht muss man nach dem Join die where-Klausel setzen.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow