und (PHP) zwei mal WHERE
Eike
- datenbank
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
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
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 '?
Das soll dann auch von den usern selber durchgeführt werden können! Das heißt mit Formular!
Hi!
Was bedeuten denn die '?
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.
Hello,
$sql = "DELETE FROM geburtstag WHERE Datum='" . $datum . "' WHERE name='" . $name . "'";
Was bedeuten denn die '?
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
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
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
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