Zend_Db_Select mit fehlender Variable in WHERE-Clause

Nehmen wir folgenden Anwendungsfall an:

$userSelect = new Zend_Db_Select($db);
$userSelect->from('User')
           ->where('Name = ?', $name);

Im Normalfall sollte die Query wie folgt aufgelöst werden:

WHERE Name = 'MeinName'

Für den Fall, dass $name = NULL, also es nicht übergeben wird, erzeugt Zend folgendes Query, welches folglich einen SQL Fehler wirft:

WHERE NAME = ?

Um diesen Fall zu vermeiden, castet man die Variable in den Datentyp, den das Tabellenfeld hat, bspw. in einen String:

->where('Name = ?', (string) $name);

Ist nun $name = NULL, so erhalten wir dennoch eine korrekte Syntax:

WHERE Name = ''

Kommentar verfassen