LeibundLeben: und MYSQL

Hallo,

folgendes ich schreibe immer schön ein Datensatz in die Datenbank nun kann es vorkommen das sich dieser Eintrag sich doppelt.
Um das auszuschließen habe ich die entsprechende Zeile in der MYSQL Datenbank auf unique gestellt.
Soweit läuft nun alles auch sehr gut. Aber wenn nun ein Fehler auftritt bricht das Script beim schreiben in die Datenbank einfach ab und gibt einen Fehler aus.

Ziel wäre aber, das wenn ein Feld schon vorhanden ist, das dieses nicht beschrieben wird, und der nächste Datensatz in die Datenbank gelangt.

Bisher sieht es so aus:

		  
$eintrag = "INSERT INTO test (nr, url) VALUES ('$nr', '$url')";  
$eintragen = mysql_query($eintrag);  
if (!$eintragen) {  
die ('Etwas stimmte im Query nicht: ' . mysql_error());  
}

gibt es soetwas wie ON DUPLICATE KEY mach weiter??

  1. Hi!

    folgendes ich schreibe immer schön ein Datensatz in die Datenbank nun kann es vorkommen das sich dieser Eintrag sich doppelt.
    Um das auszuschließen habe ich die entsprechende Zeile in der MYSQL Datenbank auf unique gestellt.
    Soweit läuft nun alles auch sehr gut. Aber wenn nun ein Fehler auftritt bricht das Script beim schreiben in die Datenbank einfach ab und gibt einen Fehler aus.

    Klar, das ist in Deinem Script auch so beabsichtigt.

    Ersetze:

    die ('Etwas stimmte im Query nicht: ' . mysql_error());

      
    Durch eine geeignete Fehlerbehandlung.  
      
    
    > gibt es soetwas wie ON DUPLICATE KEY mach weiter??  
      
    Was genau hast Du denn vor?  
      
    off:PP  
      
      
    
    -- 
    "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)  
    
    
  2. Hallo

    Soweit läuft nun alles auch sehr gut. Aber wenn nun ein Fehler auftritt bricht das Script beim schreiben in die Datenbank einfach ab und gibt einen Fehler aus.

    $eintrag = "INSERT INTO test (nr, url) VALUES ('$nr', '$url')";
    $eintragen = mysql_query($eintrag);
    if (!$eintragen) {
    die ('Etwas stimmte im Query nicht: ' . mysql_error());
    }

      
    Du verhinderst unter bestimmten Bedingungen, dass der Eintrag erfolgt, und brichts hernach mit `die()`{:.language-php} ab. Warum wunderst du dich, dass das Skript so funktioniert, wie du es programmiert hast?  
      
    Wenn das Skript ohne den Eintrag weiterlaufen soll, lasse es nicht mit `die()`{:.language-php} sterben. Das ist sowieso keine gute Fehlerbehandlung (außer bei der Entwicklung). Lasse `die()`{:.language-php} weg, gebe im Bedarfsfall (sollte hier zutreffen) eine schlüssige Meldung a la "Der Eintrag existiert bereits." und lasse den Rest des Skripts unter Berücksichtigung des gescheiterten Eintrags abarbeiten.  
      
    Tschö, Auge  
    
    -- 
    Die deutschen Interessen werden am Liechtenstein verteidigt.  
      
    [Veranstaltungsdatenbank Vdb 0.2](http://termindbase.auge8472.de/)
    
  3. echo $begrüßung;

    $eintrag = "INSERT INTO test (nr, url) VALUES ('$nr', '$url')";
    gibt es soetwas wie ON DUPLICATE KEY mach weiter??

    Warum liest du nicht im MySQL-Handbuch auf der Seite zur INSERT-Syntax nach, welche Möglichkeiten dieses Statement bietet? Ja, es gibt ON DUPLICATE KEY und es gibt auch IGNORE.

    echo "$verabschiedung $name";