Frage

Ich habe eine Website, wo ein Benutzer Bild für eine Immobilien hochladen.
Die Tabellenstruktur:

image_id
property_id
userid
filename
thumbfilename
display_order
timestamp

Das Szenario:     Wenn ein Benutzer mehrere Bilder hochlädt, sollte er / sie die primäre Foto von ihren hochgeladenen Bilder für die angegebene Eigenschaft einstellen können.

Der Code:

$sql = 'UPDATE property_images SET display_order = display_order + 1 WHERE property_id = "' . $this->_request->getParam('propertyid') . '"';
$images->getAdapter()->fetchAll($sql);
$images->update(array("display_order" => 1), 'image_id = "' . $this->_request->getParam('imageid') . '"');

Das Problem:     Ich erhalte einen "allgemeinen Fehler", wenn $ Bilder-> getAdapter () aufgerufen -> fetchAll (); Die SQL wird jedoch erfolgreich ausgeführt, aber Zend_Db_Table löst eine Ausnahme und wird nicht auf den nächsten Befehl fortfahren. Irgendwelche Ideen / Vorschläge geschätzt.

War es hilfreich?

Lösung 2

Nevermind,

Die Lösung:

$ sql = ‚UPDATE property_images SET Display_Order = Display_Order + 1 WHERE property_id = "1004" UND Display_Order <3; $ Bilder-> getAdapter () -> query ($ sql); $ Bilder-> update (array ( "Display_Order" => 1), 'image_id = "2003"');

Dies wird das dritte Bild greifen und setze es auf 1, nachdem die Bilder Einstellung, die Anzeigereihenfolge von 1 und 2 zu 2 und drei jeweils hatten.

Andere Tipps

1) Zuerst wird erkennen, dass Sie Ihren Code beheben müssen, so dass Sie die Benutzereingabe sind entkommen. Sie sind zur Zeit sehr anfällig für SQL-Injection.

2) Warum sind vorbei Sie eine UPDATE-Abfrage fetchAll ()?

3) Schauen Sie sich Zend_Db_Expr

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top