brauche_Hilfee!: mysql_error()

Hallo zusammen

Ich möchte in meiner DB Musik eintragen und dabei möchte ich gerne, dass jeder Interpret nur einmal vorkommt. Dabei möchte ich so vorgehen:

1. Interpreten immer gleich erfassen
2. Einen Unique-Index auf das Feld Interpret legen
3. Den Interpreten einfach mit insert into eintragen
4. Den mysql_error() abfragen, ob es es geklappt hat.  Wenn es nicht geklappt hat und in mysql_errno() die Nummer für Duplicate Key drinsteht für den entsprechenden Schlüssel, dann war er eben schon da.

Bei Schritt 4 komme ich einfach nicht mehr weiter! Wie kann ich eine solche Abfrage einfach realisieren?
Da ich den Unique-Index gesetzt habe, wird der Eintrag ja sowieso nicht gespeichert - aber ich möchte gerne, dass die Person, welche versucht den Interpret zu speichern, eine Meldung bekommt, dass dieser bereits vorhanden ist.

Hier noch mein Beispiel, wie ich den Eintrag in die db speichern möchte:

//Variablen zuweisen
$interpret = $_POST["interpret"];

if (($interpret == "")) {
        //echo "Fehler: Eintrag unvollst&aumlndig.";
        die;
}

//Daten in DB speichern
$sql_befehl = mysql_query("INSERT INTO interpreten (interpret) VALUES ('".$_POST['interpret']."')");

if($sql_befehl)
{ echo "Ihr Eintrag wurde hinzugef&uumlgt."; }

  1. Mahlzeit,

    Als erstes möchtest du mysql in die Tonne treten und auf mysqli oder PDO umsteigen. ;)

    Bei Schritt 4 komme ich einfach nicht mehr weiter! Wie kann ich eine solche Abfrage einfach realisieren?
    Da ich den Unique-Index gesetzt habe, wird der Eintrag ja sowieso nicht gespeichert - aber ich möchte gerne, dass die Person, welche versucht den Interpret zu speichern, eine Meldung bekommt, dass dieser bereits vorhanden ist.

    Du prüfst den Rückgabewert deines Inserts. Bei false ist was schiefgelaufen und du kannst das als Meldung ausgeben. Evtl. musst du noch den letzten error-code auslesen, damit du weisst, was genau schiefgelaufen ist. Wenn es ein Duplicate ist, meldest du es dem User entsprechend

    --
    42
  2. Tach!

    1. Den mysql_error() abfragen, ob es es geklappt hat.  Wenn es nicht geklappt hat und in mysql_errno() die Nummer für Duplicate Key drinsteht für den entsprechenden Schlüssel, dann war er eben schon da.

    Bei Schritt 4 komme ich einfach nicht mehr weiter! Wie kann ich eine solche Abfrage einfach realisieren?

    if-else. Wenn kein Fehler, dann alles gut. Wenn Fehler-Nummer == Unique-Constraint-Verletzung, dann Hinweis. Wenn anderer Fehler, dann anderer Hinweis.

    //Variablen zuweisen
    $interpret = $_POST["interpret"];

    Unnötig. $_POST["interpret"] ist bereits gebrauchsfertig, muss nicht umkopiert werden.

    if (($interpret == "")) {
            //echo "Fehler: Eintrag unvollst&aumlndig.";
            die;

    Das Script sterben lassen hinterlasst ein unfertiges HTML-Dokument. Das sieht nicht schön aus und hilft dem Anwender nicht.
    Umlaute müssen nicht verstüt werden, wenn man die Sache mit der Zeichenkodierung verstanden hat.

    //Daten in DB speichern
    $sql_befehl = mysql_query("INSERT INTO interpreten (interpret) VALUES ('".$_POST['interpret']."')");

    Einer der häufigsten Programmierfehler: Nicht beachteter Kontextwechsel.

    dedlfix.

    1. @@dedlfix:

      nuqneH

      //echo "Fehler: Eintrag unvollst&aumlndig.";

      Umlaute müssen nicht verstüt werden,

      Was für Umlaute? Der Parser wird sich über die unbekannte Entity aumlndig beschweren und das nicht escapete & anmeckern, wenn die Zeile mal nicht mehr auskommentiert sein sollte. ;-)

      Qapla'

      --
      „Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)
      1. Tach!

        Was für Umlaute? Der Parser wird sich über die unbekannte Entity aumlndig beschweren und das nicht escapete & anmeckern, wenn die Zeile mal nicht mehr auskommentiert sein sollte. ;-)

        Sicher, wenn es ein XML-Parser wäre.

        dedlfix.