Eike: und (PHP) zwei mal WHERE

Moin,
Ich möchte einen Eintrag aus der tabelle geburtstag löschen!Alerdings kann es ja vorkommen das zwei am selben Tag Geboren wurden, deshalb will ich noch nach dem namen prüfen. So ist die Wahrscheinlichkeit, das ich zwei auf ein mal lösche nur noch dann gegeben, wenn beide am selben Tag geboren sind und den selben namen haben. Und da ich nicht 1000000
oder mehr User bediene ist die wahrscheinlichkeit das dies vorkommt etwas größer als 0.

Hiermit hab ich es versucht:
$sql = "DELETE FROM geburtstag WHERE Datum='" . $datum . "' WHERE name='" . $name . "'";
das funktioniert irgendwie nicht wirklich.

könnte mir vorstellen, das man & benutzten muss aber ich weiß nicht wie ich das einbinden soll.

Für freundliche Antworten bin ich sehr Dankbar!
Eike

  1. yo,

    Und da ich nicht 1000000
    oder mehr User bediene ist die wahrscheinlichkeit das dies vorkommt etwas größer als 0.

    am besten ist es mit sogenannten künstlichen schlüsel zu arbeiten, die jeden datenzatz eindeutig identifizieren. dann kann man auch ganz genau nur einen datensatz löschen, auf bei gleichen namen und datum.

    $sql = "DELETE FROM geburtstag WHERE Datum='" . $datum . "' WHERE name='" . $name . "'";

    DELETE FROM geburtstag WHERE Datum='wert1' AND name='wert2';

    Ilja

    1. am besten ist es mit sogenannten künstlichen schlüsel zu arbeiten, die jeden datenzatz eindeutig identifizieren. dann kann man auch ganz genau nur einen datensatz löschen, auf bei gleichen namen und datum.
      DELETE FROM geburtstag WHERE Datum='wert1' AND name='wert2';

      $sql = "DELETE FROM geburtstag WHERE Datum='" . $datum . "' WHERE name='" . $name . "'";

      Was bedeuten denn die &#39?
      Das soll dann auch von den usern selber durchgeführt werden können! Das heißt mit Formular!

      1. Hi!

        Was bedeuten denn die &#39?
        Das soll dann auch von den usern selber durchgeführt werden können! Das heißt mit Formular!

        Die hast du ja auch in deinem Ausgangspost stehen!?

        Grüße,
        Fabian St.

        --
        Endlich online: http://fabis-site.net
        --> XHTML, CSS, PHP-Formmailer, Linux
        Selfcode: ie:% fl:|  br:^ va:) ls:& fo:) rl:( n4:° ss:| de:> js:| ch:| mo:) zu:)
      2. Hello,

        $sql = "DELETE FROM geburtstag WHERE Datum='" . $datum . "' WHERE name='" . $name . "'";

        Was bedeuten denn die &#39?

        Da hat jemand was durcheinander gebracht. ' wäre die HTML-Entität für das einfache Hochkomma (Häkchen oben). Aber da es bei der Zuweisung des SQL-Query-Strings um "normalen" Code für den Parder geht, also auf ASCII-Ebene, müsste man dann bestenfalls

        $sql = "DELETE FROM geburtstag WHERE Datum='$datum' and name='$name'";

        schreiben. Dabei ist zu beachten, dass sowohl $datum als auch $name vorher gegen "SQL Injection" und auf das passende Format geprüft werden müssen und außerdem durch den SQL-Escape-Filter (mysql_[real_]escape_string() ) geschickt werden müssen. Außerdem solltest Du Deine Where-Klausel natürlich noch um die passenden Rechte für den User ergänzen. Ein "normaler User" darf dann z.B. nur Datensätze löschen, die er selber angelegt hat. Dazu ergänzt man den Datensatz einfach um eine ID_OWNER, in die beim Anlegen die Benutzer-ID eingestzt wird und beim Löschen dann ebenfalls gegengeprüft wird. Hat der User ADMIN-Rechte, dann darf aer alle Datensätze löschen.

        das Nur als zusätzliche Anregung für Dich.

        Das soll dann auch von den usern selber durchgeführt werden können! Das heißt mit Formular!
        Harzliche Grüße aus http://www.annerschbarrich.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
      3. Hallo

        Das soll dann auch von den usern selber durchgeführt werden können! Das heißt mit Formular!

        Wenn du jedem Datensatz eine eindeutige ID mitgeben würdest, könntest du im
        Formular nur diese ID übergeben lassen. Damit wäre klar, welcher Datensatz
        verändert/gelöscht werden soll, egal wieviele der Datensätze gleichlautende
        Informationen enthielten, da die ID für jeden Datensatz einzigartig ist.

        Tschö, Auge

        --
        Die Musik drückt aus, was nicht gesagt werden kann und worüber es unmöglich ist zu schweigen.
        (Victor Hugo)
        1. Hello,

          Wenn du jedem Datensatz eine eindeutige ID mitgeben würdest, könntest du im
          Formular nur diese ID übergeben lassen. Damit wäre klar, welcher Datensatz
          verändert/gelöscht werden soll, egal wieviele der Datensätze gleichlautende
          Informationen enthielten, da die ID für jeden Datensatz einzigartig ist.

          und trotzdem musst Du noch prüfen, ob die angeforderte Useraktion für den Satz überhaupt zulässig ist! Der User könnte ja sein Formular fälschen und einfach Nummern eintragen, die ihm nicht zustehen.

          Harzliche Grüße aus http://www.annerschbarrich.de

          Tom

          --
          Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
          Nur selber lernen macht schlau
          1. Hallo

            und trotzdem musst Du noch prüfen, ob die angeforderte Useraktion für den Satz überhaupt zulässig ist! Der User könnte ja sein Formular fälschen und einfach Nummern eintragen, die ihm nicht zustehen.

            Recht so, aber ich wollte das nicht auch noch einmal schreiben.

            Tschö, Auge

            --
            Die Musik drückt aus, was nicht gesagt werden kann und worüber es unmöglich ist zu schweigen.
            (Victor Hugo)