Ankündigung

Einklappen
Keine Ankündigung bisher.

UNIQUE Frage ( abfrage problem )

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • UNIQUE Frage ( abfrage problem )

    Hallo zusammen ,

    ich habe mal eine frage :

    Also ich habe 3 Felder meiner DB mit UNIQUE belegt ! Das bewirkt :

    man kann jeweils in die 3 felder eine zahl eingeben , daraus ergibt sich eine kombination die aber nict doppelt in der DB stehen darf !

    Das klappt soweit und kommt aber keine fehlermeldung , wenn ein user versucht eine schon existierende kombination einzugeben !

    Wie könnte die Abfrage aussehen um ausgeben zu lassen :

    Die 3 Zahlen gibt es schon !


    Greez

    Mondschein

  • #2
    Ich kenn den MySQL Befehl nicht, aber ich habs immer so gemacht:

    in phpMyAdmin nachträglich nen Primärschlüssel angelegt für irgendein Feld. Den Befehl hab ich mir bemerkt. War sowas wie
    ALTER TABLE DROP PRIMARY KEY SET (`spalte`)

    Dann hab ich den wieder entfernt (unter Struktur) und den vorherigen SQL-Befehl ins phpMyAdmin-SQL-Feld reinkopiert und statt (`spalte`) jetzt (`spalte1`, `spalte2`,`spalte3`) geschrieben, sah dann also etwa so aus:
    ALTER TABLE DROP PRIMARY KEY SET (`spalte1`, `spalte2`,`spalte3`)
    Wie gesagt: ist Pseudocode, müsstest so wie beschrieben vorgehen oder warten bis jemand den korrekten Code postet.

    Die Frage die sich dann aber oft stellt ist, macht es dann überhaupt Sinn, diese Eingaben in 3 Spalten auszuteilen oder würde nicht auch eine genügen...

    Kommentar


    • #3
      das mit den 3 spalten habe ich ja schon , sind alle 3 mit den key belegt ( UNIQUE )

      nun will ich aber das der User es mitbekommt das die zahlen schon drin stehen !


      auf diese abfrage komm ich einfach net

      Kommentar


      • #4
        Achso, na dann mach halt eine SELECT-Abfrage bevor du den Datensatz einfügst:

        PHP-Code:
        <?php
        $sql 
        "SELECT COUNT(id) FROM table WHERE col1='$col1' AND col2='$col2' AND col3='$col3'";
        if (
        mysql_result(mysql_query($sql),0) == 0) {
          
        // gibts noch net
        } else {
          
        // da war jemand schneller...
        }
        ?>

        Kommentar


        • #5
          Ich glaube es scheint zu klappen !

          Danke schön


          Mfg

          Mondschein

          Kommentar


          • #6
            Mit Zerglings Methode musst Du die Tabelle vor dem SELECT bis nach dem INSERT sperren, sonst hast Du race conditions.


            Andere Methode:
            duplicate entry for key X hat den Fehlercode 1062
            PHP-Code:
            <?php
            $sql 
            'INSERT INTO ...';
            $result mysql_query($sql$db);
            if (
            mysql_errno()==1062) {
                echo 
            'Kombination bereits vorhanden';
            }
            else if (
            mysql_errno()!=0) {
                die(
            mysql_error());
            }
            else {
                echo 
            'erledigt';
            }
            ?>

            Kommentar


            • #7
              Die Rangehensweise kannte ich noch garnicht, sehr interessant. Danke für den Hinweis!

              Kommentar

              Lädt...
              X