2010-12-20 10 views
0

ich bin ein wenig besorgt über eine meiner mysql-Abfragen ... Die folgende Abfrage empfängt eine Variable $ DB_id ... Wenn eine Zeile mit diesem Primärschlüssel bereits existiert, führt die Abfrage eine Aktualisierung durch.ON DUPLICATE KEY UPDATE ... mit WHERE oder Subselection?

JETZT DAS DING, DAS MICH BETREUT ... Es gibt keine Beziehung, wenn die betroffenen Zeilen tatsächlich dem Benutzer gehören. Ich möchte eine WHERE-Anweisung zum UPDATE-Teil hinzufügen oder zuerst eine Unterzeile der Zeilen erstellen, die betroffen sein dürfen. So etwas wie:

[...] 
      ON DUPLICATE KEY 
      UPDATE   module_content = '{$content['text']}', 
          module_index  = '{$index}' 
      WHERE   module_post_id = '{$post]}' 

Ist das irgendwie möglich ... Bis jetzt i did not eine Lösung finden ... Jede Hilfe sehr geschätzt würde ... VIELEN DANK !!!!!

Saludos Sacha!

Antwort

0

So funktioniert ON DUPLICATE KEY nicht. Der Aktualisierungsabschnitt des INSERT wird nur auftreten, wenn eine Übereinstimmung für den UNIQUE-Schlüssel oder den PRIMARY-Schlüssel für die Tabelle vorhanden ist. (d. h. die UNIQUE/PRIMARY-Taste (n) sind effektiv die WHERE-Klausel.)

Weitere Informationen finden Sie unter der vollständigen Nummer MySQL docs.

+0

Ich weiß ... Aber die IDs werden vom Client übergeben ... also könnte ein Benutzer versuchen, diese Schlüssel zu ändern ... In meinem Fall ist das irgendwie unsicher ... – Bosh

+0

@Bosh - Das ist nicht MySQLs Schuld. Wenn Sie Datenbank-IDs direkt aus einer Abfragezeichenfolge übergeben, ist das Ihre Konstruktionsschwäche. (Warum nicht eine eindeutige textuelle Modulreferenz speichern und diese stattdessen verwenden?) –

+0

Ich weiß ;-) Aufgrund dieses Designfehlers suche ich nach einer Lösung ;-) Eigentlich verschleierte ich die IDs schon, um sie sicherer zu machen, aber es ist keine von den stärksten Algorithmen wegen der Leistung ... Was meinst du genau mit einzigartiger Textbausteinreferenz ... Ich habe gegoogelt aber keine Axplanation gefunden ... Danke! – Bosh

Verwandte Themen