WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 23.12.2005, 22:10   #1
reemrev
Inventar
 
Registriert seit: 31.01.2000
Beiträge: 1.706

Mein Computer

Standard MYSQL/PHP Datensatz löschen geht nicht

Jetzt steh ich an: Möchte einen oder mehrer Datensätze löschen, geht aber nicht, die Daten bleiben erhalten.
________________________________

$db = new mysqli('localhost', $_SESSION['valid_user'], $_SESSION['pw'], 'handel');

for($i=0;$i<$anz;$i++) {
$query = "DELETE FROM news WHERE news_ID = " . $loeschen[$i];}
________________________________

wobei "news_ID" das Indexfeld einer Tabelle ist. Das Array funktioniert. Der Benutzer hat die Rechte fürs Löschen. Verbindung zur DB wird aufgebaut. Woran könnte es sonst liegen?
reemrev ist offline   Mit Zitat antworten
Alt 24.12.2005, 13:56   #2
hewlett
Inventar
 
Registriert seit: 08.11.2000
Alter: 42
Beiträge: 1.524


Standard Re: MYSQL/PHP Datensatz löschen geht nicht

Zitat:
Original geschrieben von reemrev
Jetzt steh ich an: Möchte einen oder mehrer Datensätze löschen, geht aber nicht, die Daten bleiben erhalten.
________________________________

$db = new mysqli('localhost', $_SESSION['valid_user'], $_SESSION['pw'], 'handel');

for($i=0;$i<$anz;$i++) {
$query = "DELETE FROM news WHERE news_ID = " . $loeschen[$i];}
________________________________

wobei "news_ID" das Indexfeld einer Tabelle ist. Das Array funktioniert. Der Benutzer hat die Rechte fürs Löschen. Verbindung zur DB wird aufgebaut. Woran könnte es sonst liegen?
wo/wann führst du die query dann aus?
____________________________________
H.E.W.L.E.T.T.: Hydraulic Electronic Worker Limited to Exploration and Terran Troubleshooting
hewlett ist offline   Mit Zitat antworten
Alt 25.12.2005, 08:07   #3
delphirocks
bitte Mailadresse prüfen!
 
Registriert seit: 17.03.2002
Beiträge: 198


Standard

Gib' dir die Query als String aus und führ sie in PHPMyAdmin aus.
Dann siehst du die Fehlermeldung gleich.
Vielleichst versuchst du ja einen Masterdatensatz zu löschen, für den noch Datensätze in einer Detailtabelle existieren...
delphirocks ist offline   Mit Zitat antworten
Alt 25.12.2005, 10:07   #4
reemrev
Inventar
 
Registriert seit: 31.01.2000
Beiträge: 1.706

Mein Computer

Standard

@hewlett
Auf der Seite werden zuerst Daten eingelesen und angezeigt, gleichzeitig wird ein Formular mit Checkboxen erstellt. Wenn der SUBMIT geklickt wird, dann wird in IF ($SUBMIT){ obiger Code aufgerufen.

@delphirocks
Wenn ich den String in PHPMyAdmin eingeben, wird der entsprechende Datensatz gelöscht. Aber weil du sagst Masterdatensatz, es besteht zu einer anderen Tabelle eine referentielle Integrität. Hatte ich mal testweise erstellt und vergessen, könnte es damit zusammen hängen?
reemrev ist offline   Mit Zitat antworten
Alt 25.12.2005, 10:28   #5
delphirocks
bitte Mailadresse prüfen!
 
Registriert seit: 17.03.2002
Beiträge: 198


Standard

Naja, wenn das Statement im PHPMyAdmin funktioniert, muß es so auch funktionieren. Ich bin bezügl. der neueren MySQL Versionen nicht ganz auf Stand. Bei früheren Versionen wurden Foreign Keys ja nicht erzwungen, d.h. du konntest einen Master-Datensatz löschen, obwohl ein Detaildatensatz vorhanden war (auch wenn der Key nicht mit on delete cascade erstellt wurde).

Die neueren Versionen (5.0++ ???) erlauben dir das nicht mehr, gottseidank.

MySql sollte dir aber eigentlich eine Fehlermeldung zurückliefern, soferne du diese nicht mit '@' unterdrückt hast.

Übrigens wäre es wahrscheinlich besser, anstatt einer "For" Schleife die Abfrage so zu formulieren, sodaß nur ein "Roundtrip" vom Webserver zur DB notwendig ist.

Also anstatt:
for (...)
Delete from....

ein delete from table where newsid in (1,2,3,5,6) zu erstellen,
oder delete from table where newsid between(1,6).

Oder so ähnlich. Die Syntax könnte eventuell ein wenig andes sein, ich bin nicht ganz auf Stand...
delphirocks ist offline   Mit Zitat antworten
Alt 25.12.2005, 10:55   #6
T.dot
Master
 
Registriert seit: 13.08.2003
Beiträge: 624


Standard

Hallo...

Wenn man von deinem Code-Schnippsel ausgeht, dann wird zwar bei jedem Schleifendurchlauf aufs neue ein String erstellt, dieser aber nie ausgeführt.

Die Schleife müsste so aussehen:

for($i=0;$i<$anz;$i++)
{
$query = "DELETE FROM news WHERE news_ID = " . $loeschen[$i];
$db->query($query);
}

mfg Thomas
T.dot ist offline   Mit Zitat antworten
Alt 25.12.2005, 11:53   #7
reemrev
Inventar
 
Registriert seit: 31.01.2000
Beiträge: 1.706

Mein Computer

Standard

ARRRGGGG, vor lauter Bäumen sieht man den Wald nicht
DANKE!
reemrev ist offline   Mit Zitat antworten
Alt 26.12.2005, 13:53   #8
hewlett
Inventar
 
Registriert seit: 08.11.2000
Alter: 42
Beiträge: 1.524


Standard

Zitat:
Original geschrieben von T.dot
Hallo...

Wenn man von deinem Code-Schnippsel ausgeht, dann wird zwar bei jedem Schleifendurchlauf aufs neue ein String erstellt, dieser aber nie ausgeführt.

Die Schleife müsste so aussehen:

for($i=0;$i<$anz;$i++)
{
$query = "DELETE FROM news WHERE news_ID = " . $loeschen[$i];
$db->query($query);
}

mfg Thomas
genau das hab ich ja gemeint!
____________________________________
H.E.W.L.E.T.T.: Hydraulic Electronic Worker Limited to Exploration and Terran Troubleshooting
hewlett ist offline   Mit Zitat antworten
Alt 26.12.2005, 16:05   #9
reemrev
Inventar
 
Registriert seit: 31.01.2000
Beiträge: 1.706

Mein Computer

Standard

"wo/wann führst du die query dann aus?"
jetzt versteh ich auch schon, was du mit 'query' gemeint hast. Anfängerblindheit sag ich mal.
reemrev ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 21:14 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag