Zur Navigation

sql Zähler nach ereichtem Höchstwert wieder auf null setzen

1 kaheti

Hallo
Ich möchte gern einen Sql Tabellenwert bei Erreichen eines gewissen Standes (hier: Zählerstand/votes) automatisch wieder auf Null setzen.

Geht sowas damit:

("update topsite set votes="0" WHERE votes = '1000'")
?

nette Grüße

Kalle

08.06.2017 16:25

2 Jörg Kruse

Mit dem zweiten " beendest du den Query-String vorzeitig. Strings werden mit zwei einfachen ' begrenzt.

("UPDATE topsite SET votes = '0' WHERE votes = '1000'")

Ich würde allerdings erwarten, dass das Datenfeld votes nicht als String, sondern als Integer definiert ist - denn es wird ja damit gerechnet (Addieren von 1 bei Erhöhen des Zählerstands)? in dem Fall werden die Zahlen überhaupt nicht gequotet:

("UPDATE topsite SET votes = 0 WHERE votes = 1000")

08.06.2017 16:48

3 kaheti

Hallo
Vorne und hinten sollten auch Semikolons hin ...so zumindest sind bei mir andere Query-Strings aufgebaut die einzelne Tabelleninhalte wieder auf Null reset'en - wenn es irgendwann erforderlich wird.
Ein solcher String ist wie folgt aufgebaut:
if(mysql_query('update topsite set votes="0", was anderes noch="0" ')) 

Daran anlehnend wollte ich nun mit WHERE nur DIE wieder auf Null setzen, die eine bestimmte Höhe erreicht haben.

Aufgrund Deiner Antwort gehe ich davon aus, das die erdachte Vorgehensweise grundsätzlich schonmal richtig war. Oder? Ich will mir nicht unbedingt die Datenbank zerschiessen. Wahrscheinlich hab ich ja nur EINEN Versuch ;)

08.06.2017 17:44

4 Jörg Kruse

Vorne und hinten sollten auch Semikolons hin ...

du meinst Hochkommata:

'

Semikolon ist ein "Strichpunkt":

;

so zumindest sind bei mir andere Query-Strings aufgebaut die einzelne Tabelleninhalte wieder auf Null reset'en - wenn es irgendwann erforderlich wird.
Ein solcher String ist wie folgt aufgebaut:
if(mysql_query('update topsite set votes="0", was anderes noch="0" ')) 

Was für eine Datenbank verwendest du - MySQL?

SQL-Standard ist, dass Strings durch ' gequotet werden:

SET wort = 'foo'

... und Integer (Zahlen) gar nicht gequotet werden:

SET zahl = 1

Es kann sein, dass der Webhoster per Konfiguration eine "Kindersicherung" eingebaut hat, dass auch '' funktionieren. Bei einem Wechsel zu einer anderen Datenbank oder zu einem andern Webhoster wundert man sich dann aber, dass die Abfragen dann Fehlermeldungen werfen. Ich würde von daher Strings grundsätzlich mit ' quoten. Und bei Integer-Datenfeldern nur die nackte Zahl angeben

Aufgrund Deiner Antwort gehe ich davon aus, das die erdachte Vorgehensweise grundsätzlich schonmal richtig war. Oder?

Vom groben Aufbau ja.

Ich will mir nicht unbedingt die Datenbank zerschiessen. Wahrscheinlich hab ich ja nur EINEN Versuch ;)

In solchen Fällen kann man sich auch schnell eine Sicherungskopie erstellen :) In phpMyAdmin z.B. über Operationen -> "Kopiere Tabelle nach" und dort "Struktur und Daten" auswählen

08.06.2017 18:56 | geändert: 08.06.2017 18:58

5 kaheti

Ich meinte auch Hochkomma ... (wenn man gefühlte Tausend Sachen auf einmal machen will.... ;) ....

So wie der Sql-String geschrieben ist, das war schon immer seit Jahren so. Hat nie Probleme gemacht ...werden auch keine Errors gemeldet.
Ich kenne meine SQL-Strings auch nicht anders als eben MIT diesen " " ...naja ich habs grade dann mal ausprobiert und es funktioniert wenn Anführungszeichen benutzt werden. Die 1000 Punkte wurden gelöscht. Ich hab natürlich vorher eine Sicherungskopie gemacht mit sql-dumper ;)

vielen Dank für Deine Einlassungen ... jetzt kann ich daran weiter arbeiten und ausfeilen

Gruß

Kalle



08.06.2017 19:25

Beitrag schreiben (als Gast)

Die Antwort wird nach der Überprüfung durch einen Moderator freigeschaltet.





[BBCode-Hilfe]