Autor Thema: Suche PHP Script um SQL Datenbank Einträge zu löschen  (Gelesen 5355 mal)

Offline nils_

  • Hero Member
  • *****
  • Beiträge: 1132
Antw:Suche PHP Script um SQL Datenbank Einträge zu löschen
« Antwort #15 am: 01 August 2017, 12:27:39 »
ungetestet!!!!

<?php

$mysqli 
= new mysqli('localhost''Benutzer12345''Passwort12345''traccar');

if (
$mysqli->connect_error) {
    die(
'Connect Error (' $mysqli->connect_errno ') ' $mysqli->connect_error);
}

if (
$mysqli->query("DELETE FROM positions WHERE DATEDIFF(NOW(), serverTime) >= 62") === true) {
    echo 
'ok';
} else {
    
print_r($mysqli->error_list);
}

$mysqli->close();


//edit:
Wernieman war schneller ::)
viele Wege in FHEM es gibt!

Offline Ma_Bo

  • Hero Member
  • *****
  • Beiträge: 1176
Antw:Suche PHP Script um SQL Datenbank Einträge zu löschen
« Antwort #16 am: 01 August 2017, 13:06:00 »
ungetestet!!!!

<?php

$mysqli 
= new mysqli('localhost''Benutzer12345''Passwort12345''traccar');

if (
$mysqli->connect_error) {
    die(
'Connect Error (' $mysqli->connect_errno ') ' $mysqli->connect_error);
}

if (
$mysqli->query("DELETE FROM positions WHERE DATEDIFF(NOW(), serverTime) >= 62") === true) {
    echo 
'ok';
} else {
    
print_r($mysqli->error_list);
}

$mysqli->close();


//edit:
Wernieman war schneller ::)

Danke, dann kommt folgende Meldung:

// Array ( [0] => Array ( [errno] => 1451 [sqlstate] => 23000 [error] => Cannot delete or update a parent row: a foreign key constraint fails (`traccar`.`events`, CONSTRAINT `events_fkey_position_id` FOREIGN KEY (`position_id`) REFERENCES `positions` (`id`)) ) )
NUC mit FHEM, HM Heizungsthermostate, HM Wandthermostate, Intertechno Funksteckdosen, 10" Tablet als Wanddisplay, KeyMatic, Fensterkontakte, Fensterkontakte umgebaut als Wassermelder und Briefkastenmelder, Aussenthermostat, Anwesenheitssteuerung über Fritz Box, Google Home usw. usw.

Online CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 22361
Antw:Suche PHP Script um SQL Datenbank Einträge zu löschen
« Antwort #17 am: 01 August 2017, 13:35:05 »
serverTime) >= 62") === true)

Frage nur aus Neugier da für mich ungewöhnlich. Müssen es wirklich 3 = sein?
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://paypal.me/pools/c/8gULisr9BT
FHEM GitHub: https://github.com/fhem/
kein Support für cfg Editierer

Offline nils_

  • Hero Member
  • *****
  • Beiträge: 1132
Antw:Suche PHP Script um SQL Datenbank Einträge zu löschen
« Antwort #18 am: 01 August 2017, 13:44:49 »
Danke, dann kommt folgende Meldung:

// Array ( [0] => Array ( [errno] => 1451 [sqlstate] => 23000 [error] => Cannot delete or update a parent row: a foreign key constraint fails (`traccar`.`events`, CONSTRAINT `events_fkey_position_id` FOREIGN KEY (`position_id`) REFERENCES `positions` (`id`)) ) )

na die sagt doch schon den fehler.
 du willst was löschen was in einer anderen tabelle noch benutzt wird.

bisher hast du nichts zum datenbank aufbau geschrieben....

@CoolTux
Frage nur aus Neugier da für mich ungewöhnlich. Müssen es wirklich 3 = sein?
ich hab mich da auch gewundert, zumindest in den beispielen war es auch so, deswegen hab ich das einfach mal so hingenommen.
beispiele: http://php.net/manual/de/mysqli.query.php
und zu === --> http://php.net/manual/de/language.operators.comparison.php
viele Wege in FHEM es gibt!

Online CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 22361
Antw:Suche PHP Script um SQL Datenbank Einträge zu löschen
« Antwort #19 am: 01 August 2017, 13:47:24 »
Ah jetzt verstehe. Mit Typenvergleich. Na hoffen wir mal das beide Werte auch vom selben Typ sind  ;D
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://paypal.me/pools/c/8gULisr9BT
FHEM GitHub: https://github.com/fhem/
kein Support für cfg Editierer

Online Wernieman

  • Hero Member
  • *****
  • Beiträge: 5578
Antw:Suche PHP Script um SQL Datenbank Einträge zu löschen
« Antwort #20 am: 01 August 2017, 13:58:05 »
Auf jedem Fall weiß er jetzt, warum er nicht löschen kann
- kein FHEM-Problem
- Kein php-Problem
- Kein DB-Problem (Connektion)
- Ein DB-Aufbau-Problem ..... das kann nur der User selber lösen
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html
Zustimmung Zustimmung x 2 Liste anzeigen

Online CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 22361
Antw:Suche PHP Script um SQL Datenbank Einträge zu löschen
« Antwort #21 am: 01 August 2017, 14:03:13 »
http://www.gurkcity.de/blog/Loeschen-von-Datenbanktabellen-in-MySQL5-schlaegt-fehl-41.html


Das ist das was ich für den einfachsten Weg für einen nicht DB Kenner gefunden habe.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://paypal.me/pools/c/8gULisr9BT
FHEM GitHub: https://github.com/fhem/
kein Support für cfg Editierer

Online Wernieman

  • Hero Member
  • *****
  • Beiträge: 5578
Antw:Suche PHP Script um SQL Datenbank Einträge zu löschen
« Antwort #22 am: 01 August 2017, 14:43:37 »
Im Prinzip ja .. aber man sollte sich der Probleme bewusst sein, bevor man ohne FOREIGN_KEY_CHECKS Daten aus der DB löscht. Da ich die sonstigen Anwendungen für die DB nicht kenne, weiß ich die Seiteneffeckte nicht abzuschätzen. Es könnte sein (muß nicht), das anschließend diese Application nicht mehr will ....
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html
Hilfreich Hilfreich x 2 Liste anzeigen

Offline Christoph Morrison

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 891
  • Maintainer von 12 Modulen + holiday-Files
    • Private Website
Antw:Suche PHP Script um SQL Datenbank Einträge zu löschen
« Antwort #23 am: 01 August 2017, 21:06:29 »
Ah jetzt verstehe. Mit Typenvergleich. Na hoffen wir mal das beide Werte auch vom selben Typ sind  ;D

Das war ja mein erster Verdacht, aber mysqli_query liefert bei DELETE-Statements tatsächlich nur ein Boolean zurück, wenn die Query korrekt ausgeführt wurde.

Danke, dann kommt folgende Meldung:

// Array ( [0] => Array ( [errno] => 1451 [sqlstate] => 23000 [error] => Cannot delete or update a parent row: a foreign key constraint fails (`traccar`.`events`, CONSTRAINT `events_fkey_position_id` FOREIGN KEY (`position_id`) REFERENCES `positions` (`id`)) ) )

Eine einfache Google-Suche nach den Begriffen traccar und events_fkey_position_id hat mich zu einem für dich vermutlich hilfreichen Ergebnis geführt.

Maintainer von:
holidays · 59_Twilight · Webcount · Lindy_HDMI_Swich · ALL3076 · ALL4027 · WEBIO · ALL4000T · WEBIO_12DIGITAL · Itach_Relay · VantagePro2 · WEBTHERM · Buienradar
Hilfreich Hilfreich x 1 Liste anzeigen

Online CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 22361
Antw:Suche PHP Script um SQL Datenbank Einträge zu löschen
« Antwort #24 am: 01 August 2017, 21:17:15 »
Definitiv hilfreich.
Würde mich freuen wenn das Endergebnis hier gepostet wird.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://paypal.me/pools/c/8gULisr9BT
FHEM GitHub: https://github.com/fhem/
kein Support für cfg Editierer

Offline Ma_Bo

  • Hero Member
  • *****
  • Beiträge: 1176
Antw:Suche PHP Script um SQL Datenbank Einträge zu löschen
« Antwort #25 am: 01 August 2017, 21:29:02 »
Sobald ich wieder zu Hause bin, kann ich es testen.
Danke an alle die hier tatkräftig mithelfen.
Grüße Marcel


Tapatalk iPhone, daher kurz gehalten.
NUC mit FHEM, HM Heizungsthermostate, HM Wandthermostate, Intertechno Funksteckdosen, 10" Tablet als Wanddisplay, KeyMatic, Fensterkontakte, Fensterkontakte umgebaut als Wassermelder und Briefkastenmelder, Aussenthermostat, Anwesenheitssteuerung über Fritz Box, Google Home usw. usw.
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline Ma_Bo

  • Hero Member
  • *****
  • Beiträge: 1176
Antw:Suche PHP Script um SQL Datenbank Einträge zu löschen
« Antwort #26 am: 05 August 2017, 22:27:13 »
ungetestet!!!!

<?php

$mysqli 
= new mysqli('localhost''Benutzer12345''Passwort12345''traccar');

if (
$mysqli->connect_error) {
    die(
'Connect Error (' $mysqli->connect_errno ') ' $mysqli->connect_error);
}

if (
$mysqli->query("DELETE FROM positions WHERE DATEDIFF(NOW(), serverTime) >= 62") === true) {
    echo 
'ok';
} else {
    
print_r($mysqli->error_list);
}

$mysqli->close();


//edit:
Wernieman war schneller ::)

Ich raff es nicht, wie kann ich denn folgende Befehlsfolge in dein Script einbauen:

SET foreign_key_checks = 0;
DELETE FROM events WHERE serverTime < DATE_ADD(NOW(), INTERVAL -3 MONTH);
DELETE FROM positions WHERE serverTime < DATE_ADD(NOW(), INTERVAL -3 MONTH);
UPDATE devices SET positionId = NULL WHERE positionId NOT IN (SELECT id FROM positions);
SET foreign_key_checks = 1;

So:
<?php

$mysqli 
= new mysqli('localhost''Benutzer12345''Passwort12345''traccar');

if (
$mysqli->connect_error) {
    die(
'Connect Error (' $mysqli->connect_errno ') ' $mysqli->connect_error);
}

if (
$mysqli->query("SET foreign_key_checks = 0;
DELETE FROM events WHERE serverTime < DATE_ADD(NOW(), INTERVAL -3 MONTH);
DELETE FROM positions WHERE serverTime < DATE_ADD(NOW(), INTERVAL -3 MONTH);
UPDATE devices SET positionId = NULL WHERE positionId NOT IN (SELECT id FROM positions);
SET foreign_key_checks = 1;"
) === true) {
    echo 
'ok';
} else {
    
print_r($mysqli->error_list);
}

$mysqli->close();

NUC mit FHEM, HM Heizungsthermostate, HM Wandthermostate, Intertechno Funksteckdosen, 10" Tablet als Wanddisplay, KeyMatic, Fensterkontakte, Fensterkontakte umgebaut als Wassermelder und Briefkastenmelder, Aussenthermostat, Anwesenheitssteuerung über Fritz Box, Google Home usw. usw.

Offline nils_

  • Hero Member
  • *****
  • Beiträge: 1132
Antw:Suche PHP Script um SQL Datenbank Einträge zu löschen
« Antwort #27 am: 07 August 2017, 09:38:31 »
also.....
bitte bitte bitte poste doch mal genauer was nicht funktioniert bzw. was du für eine fehlermeldung bekommst.
ich bin auch kein sql-experte. aber so ganz ohne informationen ist das nur raten, rätseln, glaskugel und/oder kaffeesatz lesen :)


du könntest die sql queries auch nacheinander abschicken.
es könnte sein das du dir die ganze datenbank zerhaust, und nicht alles löscht was du löschen willst.
zB. UPDATE devices SET positionId = NULL WHERE positionId NOT IN (SELECT id FROM positions);
da ich bisher den ganzen aufbau nicht verstanden habe, sieht das erstmal so aus als wenn reste (vielleicht ja auch gewünscht von dir) von devices mit leerer (NULL) positionId in der datenbank bleiben!


"kaskadierendes löschen" müsste dir evtl. weiterhelfen. (google ;) )
viele Wege in FHEM es gibt!

Online Wernieman

  • Hero Member
  • *****
  • Beiträge: 5578
Antw:Suche PHP Script um SQL Datenbank Einträge zu löschen
« Antwort #28 am: 07 August 2017, 10:16:31 »
Sorry aber ohne weitere Info bezüglich DB etc. kann und werde ich nicht helfen. Ansonsten geht dann mehr kaputt als gewünscht und Hilfe ist dann nicht mehr zu erwarten.

Wenn Du so etwas vor hast, mach Dich bitte mit den Grundlagen von SQL vertraut ....
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html
Zustimmung Zustimmung x 2 Liste anzeigen

Offline Christoph Morrison

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 891
  • Maintainer von 12 Modulen + holiday-Files
    • Private Website
Antw:Suche PHP Script um SQL Datenbank Einträge zu löschen
« Antwort #29 am: 07 August 2017, 18:26:26 »
Ich raff es nicht, wie kann ich denn folgende Befehlsfolge in dein Script einbauen:

Zitat
mysqli::query -- mysqli_query — Performs a query on the database

Mit mysqli_query kann man "a", also ein (1 Ausführen vong Statement her), Statement ausführen. Das ist ein Security-Feature, damit niemand verschachtelte Queries injizieren kann. Es gibt für multiple Queries, *tusch*, eine eigene Funktion: mysqli_multi_query. Probiere es mal mit der.
Maintainer von:
holidays · 59_Twilight · Webcount · Lindy_HDMI_Swich · ALL3076 · ALL4027 · WEBIO · ALL4000T · WEBIO_12DIGITAL · Itach_Relay · VantagePro2 · WEBTHERM · Buienradar

 

decade-submarginal