UNIQUE nicht per php-Script mit UPDATE

julia29

Erfahrenes Mitglied
Hi,
um keine doppelten User-IDs zu bekommen habe ich in der MySQL das Feld 'id' als UNIQUE definiert.
Funktioniert soweit auch alles.

Leider ist nun die Änderung von bestehenden Feldern per UPDATE über ein php-Script nicht mehr möglich
z.B.:
PHP:
$dbanfrage = "UPDATE  $tabelle2 SET user_name='$user_name, letztdat='$letztdat'  WHERE id ='$id'";

Manuell, via phpMyAdmin, lassen sich die Daten schon ändern, nur nicht per Script.
Entferne ich UNIQUE, laufen auch die Aktualisierungen per Script wieder einwandfrei. Nun ist natürlich wieder die Neuanlage von doppelten IDs möglich.
Wie lässt sich das Problem lösen?

mfg
Julia
 
Hi saftmeister,

habe mich vielleicht schlecht ausgedrückt, das Feld hat den Namen ID wird jedoch als Kundennummer geführt und sollte von daher nur einmalig vorkommen. Ein Feld mit einer DB_ID gibt es auch die per auto_increment definiert ist.
Ich hätte besser Kundennummer als Feldname gewählt. Mein Problem ändert sich jedoch damit nicht.
 
Sorry, falsch verstanden. Wenn du ein Feld ID hast, welches den Primärschlüssel darstellt und ein auto-increment ist, dann update doch nach diesem Kriterium. BTW: Ich habe das nicht getestet, und finde auch im Netz nichts passendes aber:

Es könnte sein, das der Vergleichswert, der an UNIQUE geprüft wird, als doppelter Wert von id anerkannt wird. Aus diesem Grund wärst du ohnehin gezwungen, gegen den Primärschlüssel zu prüfen.

Was passiert denn, wenn du einen SELECT gegen die Tabelle fährst, der dir einen UNIQUE Wert matched?

Edit:

Hast du außerdem schon mysql_error() eingebaut?
 
Zuletzt bearbeitet:
Was passiert denn, wenn du einen SELECT gegen die Tabelle fährst, der dir einen UNIQUE Wert matched?

Ups, was ist damit gemeint?
Ich könnte mir auch eine Abfrage vorstellen ob es diese 'Kundennr' bereits gibt, wenn nicht dann Neuanlage, wenn bereits vorhanden dann entsprechende Fehlermeldung.
Aber wie mache ich das?
 
Ich meinte, du suchst dir einen Datensatz heraus, bei dem du den Wert im UNIQUE-Feld kennst. Dann schreibst du einen SELECT, der nach diesem UNIQUE-Wert sucht und führst das bspw. über phpMyAdmin aus:

SQL:
SELECT * FROM [hier_tabellenname] WHERE id='[hier_unique_wert]';

Du kannst das natürlich auch software-technisch nachbilden. Du kannst den og. SELECT-Query dafür verwenden:

PHP:
$resultp = mysql_query($select_unique_query);
if( $resultp && mysql_num_rows($resultp) )
{
   // hier ist ein doppelter unique-wert vorhanden
   mysql_free_result($resultp);
}

Das Beispiel geht davon aus, das du mysql und nicht mysqli oder pdo_mysql verwendest.
 
Zurück