Ankündigung

Einklappen
Keine Ankündigung bisher.

MySQL INSERT --> Error Handling

Einklappen

Neue Werbung 2019

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

  • MySQL INSERT --> Error Handling

    Hi,

    ich erzeuge Datensätze in einer Tabelle.
    Innerhalb der Tabelle habe ich 2 Spalten als UNIQUE deklariert.

    Wenn nun beim Erzeugen eines Datensatzes die selbe Kombination in die Tabelle geschrieben werden soll, welche aber schon vorhanden ist, so spuckt natürlicherweise die Datenbank einen Fehler aus:

    Code:
    Error: INSERT INTO p_subp (place_id, subp_id) VALUES ('1', '1') 
    Duplicate entry '1-1' for key 'Place_SubPlace'
    Wie kann ich das nun abfangen, dass ein PHP Echo mit einem Text (z.B.: Kombination schon vorhanden) eingeblendet wird?

    Hier mein Script:

    PHP-Code:
            $place $_POST['place'];
        
    $subp $_POST['subp'];

        
    // Anfrage zusammenstellen der an die DB geschickt werden soll
        
    $sql "INSERT INTO p_subp (place_id, subp_id) VALUES ('".$place."', '".$subp."')";
        
                         
        
    // Schickt die Anfrage an die DB und schreibt die Daten in die Tabelle
        
    mysql_query$sql )
        OR die(
    "Error: $sql <br>".mysql_error());
        
    // Pruefen ob der neue Datensatz tatsaechlich eingefuegt wurde
        
    if (mysql_affected_rows() > 0
        {
            echo 
    "<h3>Der Ort wurde hinzugefügt!</h3>";
        }
        else
        {
            echo 
    "<h3>Der Ort wurde nicht hinzugefügt!</h3>";
        } 

  • #2
    Fehler mit @ unterdrücken, mysql_error wegnehmen, mysql_errno verwenden und auf Fehlernummer reagieren.

    Außerdem solltest du dich von der alten MySQL-Extension verabschieden und auf MySQLi umsteigen
    Die Deutsche Rechtschreibung ist Freeware! Du darfst sie kostenlos nutzen, allerdings ist sie nicht Open Source, d.h. Du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

    Kommentar


    • #3
      Danke! Hab ein wenig bei Google nach "mysql_errno" gesucht und hab gefunden!

      Hier mein angepasster Code:

      PHP-Code:
      if (isset( $_POST['p_anlegen'] )) {
           
      // Inhalte der Felder aus POST holen
          
      $place $_POST['place'];
          
      $subp $_POST['subp'];

          
      // Anfrage zusammenstellen der an die DB geschickt werden soll
          
      $sql "INSERT INTO p_subp (place_id, subp_id) VALUES ('".$place."', '".$subp."')";
          
                           
          
      // Schickt die Anfrage an die DB und schreibt die Daten in die Tabelle
          
      mysql_query$sql )
          OR 
      mysql_errno();
              
          
      $fehler mysql_errno();  
           
          
      //1062 = Fehlernummer DUPLICATE ENTRY//  

          
      if($fehler == 1062) {  
                 echo 
      "<h3>Die Kombination von Ort und Unterort ist schon vorhanden!</h3>";}  
             else {    
              
      // Pruefen ob der neue Datensatz tatsaechlich eingefuegt wurde
              
      if (mysql_affected_rows() > 0) {
                     echo 
      "<h3>Der Ort wurde hinzugefügt!</h3>";
              }
              else {
                    echo 
      "<h3>Der Ort wurde nicht hinzugefügt!</h3>";
              }
             }

      Jedoch hab ich noch nicht verstanden, wo ich überall "MySQL" mit "MySQLi ersetzten kann.

      Kommentar


      • #4
        Zitat von Schmakus Beitrag anzeigen
        Jedoch hab ich noch nicht verstanden, wo ich überall "MySQL" mit "MySQLi ersetzten kann.
        Allles mit mysql_ ersetzen, die Doku ist dabei hilfreich
        Die Deutsche Rechtschreibung ist Freeware! Du darfst sie kostenlos nutzen, allerdings ist sie nicht Open Source, d.h. Du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

        Kommentar

        Lädt...
        X