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?

War es hilfreich?

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
scroll top