Ich habe eine Tabelle "grounddentlink", wo ich alle Zeilen löschen möchte, die nicht in einem Formular überprüft wurden.
Im Wesentlichen möchte ich eine Abfrage durchführen wie:
%Vor%Ich denke, ich könnte eine Variable mit einer foreach-Schleife setzen und dann die Array-Werte hinzufügen, so dass ich am Ende:
%Vor%... und so weiter.
Aber ist das wirklich der richtige / beste Weg, dies zu tun?
Vielen Dank im Voraus!
Wenn Sie diese Abfrage von einer Zend Framework-basierten Anwendung ausführen möchten, beachten Sie bitte Folgendes:
%Vor%Wenn Sie es versuchen. Operator für Verkettungszwecke führt die Abfrage aufgrund der Anführungszeichen zu einem schwerwiegenden Fehler. Also aus meiner Erfahrung mit htmlspecialchars oder htmlncode zusammen mit. Betreiber wird nur Ihre Zeit und Geduld verbrauchen. Die Verwendung von Sprintf ist elegant und hilft Ihnen, Ihren Code sauber zu halten.
Und ich denke, diese Beobachtungen gelten für jede Anwendung, die PHP-Objekte verwendet.
Neuer Benutzer von Exchange stapeln, bitte verzeihen und anweisen, wenn ich einen Fauxpas begehe.
Die vorhergehende Antwort ist unglaublich gefährlich, weil sie Sie für SQL-Injection-Angriffe öffnet.
Verwenden Sie immer bind params.
Verwenden Sie immer bind params.
Verwenden Sie immer bind params.
Hinweis: Wenn Ihre Abfrage nicht "DELETE * FROM groupdentlink WHERE group_id = 'a' AND zahnarzt_id NICHT IN (?,?,?);" du machst es falsch.
Eine elegante, vollständig parametrisierte Lösung (mit PDO):
%Vor% Die implode
Funktionszeichenfolgen ?
zusammen mit ,
, ohne ein Komma am Ende hinzuzufügen ( Quelle ). Sie könnten das in eine Funktion umwandeln, um es lesbarer zu machen, sonst behält %%_de% es schön und sauber ohne hässliche String-Verkettung.