SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Einführung in XHTML, CSS und Webdesign

Einführung in XHTML, CSS und Webdesign zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP Grundlagen
Hilfe Community Kalender Heutige Beiträge Suchen

PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden

Antwort
 
Themen-Optionen Ansicht
  #11  
Alt 23.11.2013, 21:18:30
DokuLeseHemmung DokuLeseHemmung ist offline
SELFPHP Experte
 
Registriert seit: Jun 2008
Alter: 15
Beiträge: 2.269
AW: PHP/MySQLi mehrere Daten löschen

Zitat:
Und auf die Art kann ich nur Daten aus der User-Tabelle löschen?!
Zitat:
Was bringt es mir denn, die ID aus der der Tabelle Users zu löschen wenn ich die ID doch brauche um sie ebenso aus mehreren anderen Tabellen ebenfalls zu löschen?
Google: "mysql foreign key on delete cascade"
Mit Zitat antworten
  #12  
Alt 24.11.2013, 04:02:53
Benutzerbild von meikel (†)
meikel (†) meikel (†) ist offline
SELFPHP Guru
 
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
AW: PHP/MySQLi mehrere Daten löschen

Zitat:
Zitat von Zaphelius Beitrag anzeigen
Den Fehler hab ich ja auch alleine bereits vor Stunden gefunden, s.o.
Fein. Strittig ist allerdings, warum die betreffenden IDs trotzdem nicht gelöscht werden.
Zitat:
Vielleicht bringt mich der Hinweis einfach nicht weiter?!
Na wenigstens mal das Handbuch lesen:
http://dev.mysql.com/doc/refman/5.5/en/delete.html
http://dev.mysql.com/doc/refman/5.5/...ml#function_in
und das:
http://dev.mysql.com/doc/refman/5.5/...ubqueries.html
Zitat:
Was bringt es mir denn, die ID aus der der Tabelle Users zu löschen wenn ich die ID doch brauche um sie ebenso aus mehreren anderen Tabellen ebenfalls zu löschen?
Wie Du siehst, kannste bei DELETE auch mehr als eine Tabelle angeben. Sozusagen ein "Delete Join". Und Deine ID Liste erledigst Du als Subselect und wirfst das Ergebnis IN() im WHERE zum Fraß vor.

Plan B wäre der Hinweis von DokuLeseHemmung.
Zitat:
Ich wär nämlich auch lieber längst fertig, als Stundenlang daran zu sitzen und nicht weiter zu kommen.
Da mußte durch. Datenbankdesign erledigt man nicht nebenbei. Das ist Arbeit.
Mit Zitat antworten
  #13  
Alt 24.11.2013, 14:32:41
Zaphelius Zaphelius ist offline
Anfänger
 
Registriert seit: Nov 2013
Alter: 33
Beiträge: 9
AW: PHP/MySQLi mehrere Daten löschen

Zitat:
Strittig ist allerdings, warum die betreffenden IDs trotzdem nicht gelöscht werden.
Dazu habe ich etwas gefunden. Das hier s. Punkt Fallstrick bei mysqli_query()

Nun hab ich zwar eine Erklärung, warum es wohl nicht geht. Aber ich verstehe die beschriebene Lösung nicht so wirklich. Denn wenn ich dieses free_result benutze erhalte ich immer nur die Meldung, Call to undefined method mysqli_stmt::free_result()

Mittlerweile habe ich zwar eine Lösung zum löschen der Datensätze:

Zitat:
Google: "mysql foreign key on delete cascade"
Danke.

Trotzdem würde ich nun gerne wissen, wo das Problem beim oben beschriebenen ist. Vielleicht brauch ich ja irgendwann doch mal so einen Query in einer while-Schleife.

Zitat:
Da mußte durch. Datenbankdesign erledigt man nicht nebenbei. Das ist Arbeit.
Meine Aussage war auch nur darauf bezogen, dass es mir so vorkam, als ob Du mir vorwirfst ich wäre an einer anderen Lösung nicht interessiert. Das war nicht der Fall, ich hab nur nicht verstanden wie ich mit dem Tipp von DokuLeseHemmung weiterkommen soll. Mittlerweile hab ich es verstanden.

Aber wie gesagt: Mich würde trotzdem interessieren, warum ich keinen Query innerhalb einer while-Schleife setzen kann bzw. wie man das doch kann. Denn man kann es, wie ich gelesen habe, ich verstehe nur nicht wie.
Mit Zitat antworten
  #14  
Alt 24.11.2013, 18:31:25
Benutzerbild von vt1816
vt1816 vt1816 ist offline
Administrator
 
Registriert seit: Jul 2004
Beiträge: 3.707
AW: PHP/MySQLi mehrere Daten löschen

Zitat:
Zitat von Zaphelius Beitrag anzeigen
[..]
Aber wie gesagt: Mich würde trotzdem interessieren, warum ich keinen Query innerhalb einer while-Schleife setzen kann bzw. wie man das doch kann. Denn man kann es, wie ich gelesen habe, ich verstehe nur nicht wie.
Siehe hier Meikels Ausführungen dazu:
Zitat:
Der 2. Durchlauf scheitert im while(), weil das überschriebene Objekt $stmt nicht mehr vom Type mysqli stmt sondern vom Typ mysqli result ist.
http://us3.php.net/manual/en/class.mysqli-result.php
Benutze einen anderen Namen (zum Bsp. $stmt1).
__________________
Gruss vt1816
Erwarte nicht, dass sich jemand mehr Mühe mit der Antwort gibt als Du Dir mit der Frage.
. . . . . Feedback wäre wünschenswert

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, WhatsApp, Skype, Mail, ICQ, etc...) nur per Barzahlung oder Vorauskasse!

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #15  
Alt 24.11.2013, 19:55:18
Zaphelius Zaphelius ist offline
Anfänger
 
Registriert seit: Nov 2013
Alter: 33
Beiträge: 9
AW: PHP/MySQLi mehrere Daten löschen

Zitat:
Zitat von vt1816 Beitrag anzeigen
Siehe hier Meikels Ausführungen dazu:

Benutze einen anderen Namen (zum Bsp. $stmt1).
Zitat:
Benutze einen anderen Namen (zum Bsp. $stmt1).
Tat ich ja bereits:

Zitat:
$sql = '
SELECT USER_ID
FROM '.$config['TABLE_PREFIX'].'USERS
WHERE USER_STATUS < ?
AND USER_LAST_ACTIVE < ?';
$stmt = $db->prepare($sql);
if(!$stmt) {
return $db->error;
}
$stmt->bind_param('ii', $user_del_status, $user_del_time);
$stmt->execute();
$stmt->bind_result($del_user_id);
while($stmt->fetch()) {
$sql2 = 'DELETE
FROM '.$config['TABLE_PREFIX'].'USERS
WHERE USER_ID = $del_user_id';
$stmt2 = $db->query($sql2);
$sql3 = 'DELETE
FROM '.$config['TABLE_PREFIX'].'USER_PROFILE
WHERE USER_ID = $del_user_id';
$stmt3 = $db->query($sql3);
}
Der Code wird aber nicht ausgeführt.
Als Fehlermeldung erhalte ich nur: "Commands out of sync; you can't run this command now"
Und so wie ich das verstanden habe, hat es etwas damit zu tun, was HIER - Fallstrick bei mysqli_query() erklärt wird.
Allerdings funktioniert dieses mysqli_free_result() nicht, oder ich mache das falsch. Dazu finde ich aber keine nähere Erklärung, egal wie oft die Doku durchblätter, Google quäle, ...

Hat also weder etwas mit meinen Variablen-Namen noch mit fetch() an sich zu tun.
Mit Zitat antworten
  #16  
Alt 24.11.2013, 21:04:40
Benutzerbild von meikel (†)
meikel (†) meikel (†) ist offline
SELFPHP Guru
 
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
AW: PHP/MySQLi mehrere Daten löschen

Zitat:
Zitat von Zaphelius Beitrag anzeigen
Der Code wird aber nicht ausgeführt.
Was von dem Code wird nicht ausgeführt
Zitat:
Als Fehlermeldung erhalte ich nur: "Commands out of sync; you can't run this command now"
Und in welcher Zeile wird gemeckert?

Zitat:
Allerdings funktioniert dieses mysqli_free_result() nicht, oder ich mache das falsch.
In Deinem Script ist free_result sinnfrei. Nur die erste Abfrage hat ne Resultmenge, aber diese Menge darfste nicht in die Tonne treten, weil Du die IDs ja in der Schleife brauchst.
DELETE hat keine Resultmenge. Der Rückgabewert ist true = OK oder false = MySQL Error.

Hausaufgabe:
1. welche Passagen des PHP Scriptes werden ausgeführt?
2. in welcher Zeile meckert MySQL? Vor oder in der Schleife?
2.1 meckert MySQL jedes Mal oder
2.2 am dem 2. Durchlauf?
3. wie sieht das CREATE TABLE tabellenname der einzelnen Tabellen aus?
4. ein paar zusammenpassende Datensätze aus den Tabellen als INSERT wären auch nicht schlecht.
5. welche PHP Version, welche Server API?
6. welcher Datenbankserver (Client- und Serverversion)

Mach mit dem PhpMyAdmin einen Export (Schema + Daten) der betreffenden Tabellen im SQL Format.
Code:
Daten:
Zu verwendende Syntax bei der Dateneingabe:
X    Spaltennamen bei jedem INSERT Schlüsselwort verwenden
10 Rekords genügen, wenn darunter Datensätze sind, die gelöscht werden sollen, und welche, die übrigbleiben müssen.
Mit Zitat antworten
  #17  
Alt 24.11.2013, 21:31:46
Zaphelius Zaphelius ist offline
Anfänger
 
Registriert seit: Nov 2013
Alter: 33
Beiträge: 9
AW: PHP/MySQLi mehrere Daten löschen

Zitat:
Was von dem Code wird nicht ausgeführt
Der Teil in der Schleife wird nicht ausgeführt.

Zitat:
Und in welcher Zeile wird gemeckert?
Steht nicht dabei. Aber, es ist die Fehlerausgabe des ersten UND zweiten MySQL-Querys innerhalb der Whileschleife.

Zitat:
Hausaufgabe:
1. - 2..2:
Alles, außer die beiden Querys in der while-Schleife. Nur die beiden Querys IN der Schleife geben die Fehlermeldung aus. "Commands out of sync; you can't run this command now"

3. - 3.1:

PHP-Code:
CREATE TABLE IF NOT EXISTS `hp_USERS` (
  `
USER_IDint(9NOT NULL AUTO_INCREMENT,
  `
USER_LOGIN_NAMEvarchar(30) DEFAULT NULL,
  `
USER_DISPLAY_NAMEvarchar(30) DEFAULT '',
  `
USER_PASSWORDchar(32) DEFAULT NULL,
  `
USER_REG_DATEint(11) DEFAULT NULL,
  `
USER_REG_MAILvarchar(100) DEFAULT NULL,
  `
USER_REG_IPchar(15) DEFAULT NULL,
  `
USER_IS_APPROVEDvarchar(3) DEFAULT NULL,
  `
USER_IS_BANNEDvarchar(3) DEFAULT NULL,
  `
USER_IS_TESTERvarchar(3) DEFAULT NULL,
  `
USER_STATUSint(2) DEFAULT NULL,
  `
USER_SESSIONvarchar(64) DEFAULT NULL,
  `
USER_LAST_ACTIVEint(11) DEFAULT NULL,
  
PRIMARY KEY (`USER_ID`),
  
UNIQUE KEY `USER_ID` (`USER_ID`),
  
UNIQUE KEY `USER_LOGIN_NAME` (`USER_LOGIN_NAME`)
ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=20 ;

INSERT INTO `hp_USERS` (`USER_ID`, `USER_LOGIN_NAME`, `USER_DISPLAY_NAME`, `USER_PASSWORD`, `USER_REG_DATE`, `USER_REG_MAIL`, `USER_REG_IP`, `USER_IS_APPROVED`, `USER_IS_BANNED`, `USER_IS_TESTER`, `USER_STATUS`, `USER_SESSION`, `USER_LAST_ACTIVE`) VALUES
(1'Guest''Guest''Guest'0'guest''127.0.0.1''yes''no''no'0NULL1384171871),
(
16'Test''Test''Test'0'test''127.0.0.1''yes''no''no'0NULL1000),
(
17'Test2''Test2''Test2'0'test2''127.0.0.1''yes''no''no'0NULL10000)
(
18'Test3''Test3''Test3'0'test3''127.0.0.1''yes''no''no'0NULL100000);

CREATE TABLE IF NOT EXISTS `hp_USER_PROFILE` (
  `
USER_IDint(11NOT NULL,
  `
USER_LANGUAGEvarchar(10) DEFAULT NULL,
  `
USER_EMAILvarchar(100) DEFAULT NULL,
  `
USER_BIRTHDATEdate DEFAULT NULL,
  `
USER_SIGNATUREvarchar(255) DEFAULT NULL,
  `
USER_HOMEPAGEvarchar(150) DEFAULT NULL,
  `
USER_JOBvarchar(150) DEFAULT NULL,
  `
USER_HOBBIEvarchar(200) DEFAULT NULL,
  `
USER_LOCATIONvarchar(200) DEFAULT NULL,
  
PRIMARY KEY (`USER_ID`)
ENGINE=InnoDB DEFAULT CHARSET=utf8;

NSERT INTO `hp_USER_PROFILE` (`USER_ID`, `USER_LANGUAGE`, `USER_EMAIL`, `USER_BIRTHDATE`, `USER_SIGNATURE`, `USER_HOMEPAGE`, `USER_JOB`, `USER_HOBBIE`, `USER_LOCATION`) VALUES
(1'deutsch''guest@domain.tld''1980-01-01'NULLNULLNULLNULLNULL),
(
16'deutsch''test@test.de''1980-01-01'NULLNULLNULLNULLNULL),
(
17'deutsch''test@test.de''1980-01-01'NULLNULLNULLNULLNULL),
(
18'deutsch''test@test.de''1980-01-01'NULLNULLNULLNULLNULL); 
Zitat:
5. welche PHP Version, welche Server API?
Ist alles vom Test-System auf meinem PC mit XAMPP 1.8.2:

PHP Version 5.4.19
Apache 2.0 Handler
MySQL-Server-Version: 5.5.32 - MySQL Community Server (GPL)
MySQL-Client-Version: libmysql - mysqlnd 5.0.10
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 aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Doppelte Daten löschen Mantigor PHP Grundlagen 11 03.03.2009 09:33:09
Daten aus mehreren Tabellen löschen? Mit Triggern oder per PHP? Daffy MySQLi/PDO/(MySQL) 1 20.11.2007 20:07:13
Daten via script von server löschen KingReti PHP für Fortgeschrittene und Experten 17 11.03.2005 07:14:49
Nach ablauf des Datums, daten automatisch löschen Janson PHP für Fortgeschrittene und Experten 13 20.07.2004 15:02:06
Löschen von Daten in einer Zeile! Satherlor PHP Grundlagen 1 22.10.2003 22:18:29


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


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt