Martin Hein: Query abgebrochen ?

Hallo Forum,

folgendes Script wir zum Löschen aus zwie DB-Tabellen
verwedent:

--------------------------------------------------------------------
$offline_DelStatm = "DELETE FROM content\_offline WHERE site\_id = ".$_GET['site_id'];
$offline_DelReslt = mysql($db1Name, $offline_DelStatm);

$online_DelStatm = "DELETE FROM content\_online WHERE site\_id = ".$_GET['site_id'];
$online_DelReslt = mysql($db1Name, $online_DelStatm);

header("location:./?mode=1");
--------------------------------------------------------------------

... damit sollten beide Datensätze in beide Tabellen, je nach Existenz gelöscht werden. Ich habe nun einen Datensatz gefunden,
der in der einen Tabelle noch existiert.

Was kann es dafür für eine Erklärung geben?

merci für Tipps und

beste gruesse,
martin

  1. Ich grüsse den Cosmos,

    header("location:./?mode=1");

    Das ist falsch.

    ... damit sollten beide Datensätze in beide Tabellen, je nach Existenz gelöscht werden. Ich habe nun einen Datensatz gefunden,
    der in der einen Tabelle noch existiert.

    Was kann es dafür für eine Erklärung geben?

    Na z.B. das der Datensatz mit deinem WHERE nicht übereinstimmt und daher nicht gelöscht wird.
    Und somit erkläre ich das Ratespiel für eröffnet, da es weder einen Datenbankauszug gibt noch einen Wert, der als site_id übergeben wird.

    Möge das "Self" mit euch sein

    --
    Fragt ein Atom das andere: Hast du mein Elektron gesehen? Ich bin heute so positiv.
    ie:{ br:> fl:| va:| ls:& fo:{ rl:( n4:{ de:] ss:) ch:? js:| mo:) sh:( zu:)
    1. ... damit sollten beide Datensätze in beide Tabellen, je nach Existenz gelöscht werden. Ich habe nun einen Datensatz gefunden,
      der in der einen Tabelle noch existiert.

      Was kann es dafür für eine Erklärung geben?

      Na z.B. das der Datensatz mit deinem WHERE nicht übereinstimmt und daher nicht gelöscht wird.
      Und somit erkläre ich das Ratespiel für eröffnet, da es weder einen Datenbankauszug gibt noch einen Wert, der als site_id übergeben wird.

      ich habe das nun nicht explizit dazu geschrieben, denn ich dachte, es würde daraus deutlich werden, dass ich hier nicht näher auf die
      werte eingehe: querys stimmen natürlich und lassen sich z.b unter phpmyadmin ausführen.

      1. Ich grüsse den Cosmos,

        querys stimmen natürlich und lassen sich z.b unter phpmyadmin ausführen.

        Dann gibt es nur zwei möglichkeiten:

        1. du hast kein Problem
        2. du setzt die Querys falsch ab

        BTW: Ob sich was ausführen lässt und ob es erfolgreich war, sind erstmal zwei verschiedene Stiefel.

        Möge das "Self" mit euch sein

        --
        Fragt ein Atom das andere: Hast du mein Elektron gesehen? Ich bin heute so positiv.
        ie:{ br:> fl:| va:| ls:& fo:{ rl:( n4:{ de:] ss:) ch:? js:| mo:) sh:( zu:)
        1. was passiert, wenn zwischendurch der mysql-server abrauscht ?
          wartet das php-script dann bis zum sanknimmerleitstag mit dem
          "header()" ?

          irgendwo da muss mein problem sein.

          beste gruesse,
          martin

          1. Hallo Martin,

            was passiert, wenn zwischendurch der mysql-server abrauscht ?
            wartet das php-script dann bis zum sanknimmerleitstag mit dem
            "header()" ?

            nö, natürlich nicht. Deswegen solltest Du doch den Rückgabewert von mysql_query() überprüfen :-)

            Freundliche Grüße

            Vinzenz

  2. Hallo Martin,

    folgendes Script wir zum Löschen aus zwie DB-Tabellen
    verwedent:

    bitte verbessere es :-)

      
    
    > --------------------------------------------------------------------  
    > $offline_DelStatm = "DELETE FROM `content_offline` WHERE `site_id` = ".$_GET['site_id'];  
      
    // Trau niemandem, nicht mal Dir selbst :-)  
    // oder besser: Es ist _immer_ eine gute Idee, Daten kontextgemäß zu  
    //              maskieren. Gewöhne es Dir einfach an.  
    $offline_DelStatm = "DELETE FROM content_offline WHERE site_id = " . [link:http://www.php.net/manual/de/function.mysql-real-escape-string.php@title=mysql_real_escape_string]($_GET['site_id']);  
    $offline_DelReslt = mysql_query($db1Name, $offline_DelStatm);  
    // Überprüfe, ob Deine Abfrage erfolgreich ausgeführt werden konnte.  
    if ($offline_DelReslt) {  
        $count = [link:http://www.php.net/manual/de/function.mysql-affected-rows.php@title=mysql_affected_rows()];  
        // Wieviele sollten Deiner Ansicht nach gelöscht werden  
      
    }  
    else {  
        // Was auch immer Du tun willst, wenn die Abfrage zurückgewiesen wurde.  
    }  
      
    [...]  
      
    
    > header("location:./?mode=1");  
    
    

    zu header() hat Dir Manuel ja bereits gesagt, dass Du da einen Fehler drin hast, auch wenn Dein Client das vielleicht akzeptiert. Lies Dir bitte im Handbuch die Anmerkung zum Location-Header durch, dann siehst Du auch, was Du wie verbessern kannst.

    Freundliche Grüße

    Vinzenz

    1. Hallo Vinzenz,

      der Datensatz soll gelöscht werden, sofern er denn vorhanden
      ist. Ob er vorhanden ist, weiss ich an der Stelle nicht.

      "header()": das kann eigentlich die einzige Ursache sein
      und wenn das probelmatisch ist, hab ich den Fehle jetzt
      gefunden ;)

      besten dank für den hinweis,
      martin