Martin Rozmus: /PHP: Fehlerausgabe, obwohl kein Fehler vorhanden

Beitrag lesen

Moin!

Mit folgender Funktion lösche ich Personen mit zuvor übergebenen IDs -Prim. Schlüssel- (hier: $arr_lfd) aus der Tabelle 'personen' und zusätlich die zu der jeweiligen ID gehörenden Einträge in abhängigen Tabellen.
Die abhängigen Tablellen, die Spalte mit dem "Sekundärschlüssel", sowie die Tabelle 'personen' und die Spalte mit den Primärschlüsseln (hier:lfd) sind in dem Array $arr_tab gespeichert.

Wenn der DELETE Aufruf erfolgreich war, wird das mit einem Hinweis bestätigt, scheitert er, wird ebenfalls ein Hinweis ausgegeben mit dem SQL String und der Fehlermeldung der DB - und zwar für jeden DELETE - Vorgang.

Nun zu meinem Problem:
Jedes mal, wenn die Funktion aufgerufen wird, erscheinen die Hinweismeldungen, dass etwas schief gelaufen ist. Wenn ich mir jedoch die Tabellen nach der Löschung anschaue, hat alles funktionier.

Hier als Beispiel ein SQL String und die dazugehörige Fehlermeldung nur für eine Tabelle:

SQL: DELETE FROM chron_status WHERE fk_personen = 44
FEHLER: You have an error in your SQL syntax near '1' at line 1

Es verhält sich so bei allen Tabellen. Außer des Wertes für fk_personen (bzw. lfd) ändert sich bei der SQL-, Fehlerausgabe nichts.

Die Funktion ist im "Anhang" zu finden.

Für Tipps und Anregungen bin ich sehr Dankbar.

Gruss Martin
-------------------------------------------------------
FUNKTION:

function personen_loeschen($arr_lfd){
 $db = mySQL_ini();
     //Array 2 Dim, speichert Tabellen und das relevante Feld für die Löschung
     $arr_tab = array(
         array("chron_status","fk_personen"),
                         array("chron_personengruppe","fk_personen"),
                         array("kontakt_privat","fk_personen"),
                         array("personen","lfd")
         );
 foreach($arr_lfd AS $p_lfd){
  for($i=0;$i<count($arr_tab);$i++){
               $sql="DELETE FROM ".$arr_tab[$i][0]." WHERE ".$arr_tab[$i][1]." = ".$p_lfd;
               $result = mysql_query($sql,$db);
               if (@mysql_query($result)){
     ?>
                    <p>
                         Daten des Benutzers mit Lfd.: <? echo $p_lfd ?>
                         aus der Tabelle '<? echo $arr_tab[$i][0] ?>' entfernt.
                    </p>
     <?
               }else{
     ?>
                    <p style="border:1px solid #000000; padding:3px">
                         Daten des Benutzers mit der Lfd.: <? echo $p_lfd ?>
                         konnten aus der Tabelle '<? echo $arr_tab[$i][0] ?>' <b>NICHT</b>
                         gelöscht werden!!!<br>
                         Kopiere die folgenden Meldungen und schicke sie an deinen
                         Administrator:
                         <div style="border:1px solid red; padding:3px">
                         SQL: <? echo $sql ?> <br> FEHLER: <? echo mysql_error($db) ?>
                         </div>
                    </p>
     <?
    }
               }
     }
}
---------------------------------------------------

P.S.: Wenn man in der if - Bedingung das @ entfernt, werden keine zusätzlichen Fehlermeldungen ausgegeben.