Moin!
Nungut, meine da ich ein ordentliches Script will, muss ich einfach nochmal schreiben! =)
Meine Lösung sieht also so aus:
"DELETE FROM $tabellenname WHERE name='$loeschen[name]' LIMIT 1";
Die ist wunderbar.
Deine so:
"DELETE FROM $tabellenname WHERE (name="{$loeschen["name"]}") LIMIT 1";
Das von dir richtig erkannte Problem dieser Lösung ist, dass sie eine Fehlermeldung liefern dürfte.
bzw.
"DELETE FROM $tabellenname WHERE (name=".$loeschen["name"].") LIMIT 1";
Das Problem dieser Lösung ist, dass im entstehenden SQL-String um den String, der den Namen bildet, keine Anführungsstriche stehen, so dass die Datenbank damit Probleme haben könnte.
Jetzt verstehe ich eins nicht: Die Anführungszeichen im Arraywert müssen doch im Script "verwirrend" wirken...! Oder wird die Verwirrung durch die Klammern bzw. Punkte verhindert? Wenn ja, sind Punkte oder Klammern besser? Ich würde mich nochmals über eine Antwort von dir freuen!
Stell dir das zu erzeugende Ergebnis mal vor:
DELETE FROM dietabelle WHERE name='dername' LIMIT 1
Das soll erzeugt werden. Die Variablen darin sind:
$tabellenname = "dietabelle";
$loeschen['name'] = "dername";
Mit der Anweisung:
$sqlquery = "DELETE FROM dietabelle WHERE name='dername' LIMIT 1";
hast du der Variablen $sqlquery diesen String zugeordnet.
Nebenbei bemerkt: Einfache Anführungsstriche im SQL-String zur Stringbegrenzung vertragen sich wunderbar mit den doppelten Anführungsstrichen, die den PHP-String begrenzen.
In diesem String kannst du nun ein paar Ersetzungen machen, um ihn variabel zu gestalten. dietabelle wird durch $tabellenname ersetzt, und dername durch $loeschen['name'].
$sqlquery = "DELETE FROM $tabellenname WHERE name='$loeschen['name']' LIMIT 1";
Weil es mit Arrayvariablen innerhalb von Strings immer mal wieder (so genau hab ich das auch noch nicht herausgefunden, wann das der Fall ist) Probleme gibt, ist es sehr sinnvoll, sie in geschweifte Klammern einzuschließen, um auf Nummer Sicher zu gehen:
$sqlquery = "DELETE FROM $tabellenname WHERE name='{$loeschen['name']}' LIMIT 1";
Alternativ kann man den String auch aus Einzelstücken zusammensetzen - der Verkettungsoperator ist der Punkt:
$sqlquery = "DELETE FROM $tabellenname WHERE name='".$loeschen['name']."' LIMIT 1";
Ich bevorzuge mittlerweile die geschweiften Klammern.
- Sven Rautenberg
"Bei einer Geschichte gibt es immer vier Seiten: Deine Seite, ihre Seite, die Wahrheit und das, was wirklich passiert ist." (Rousseau)