kostenloser Webspace werbefrei: lima-city


Timestamp und MySQL Meckert.

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    saalko

    saalko hat kostenlosen Webspace.

    Hi habe jetzt einen Timestamp eintrag in der Mysql Datenbank und den Wollte ich per time() (PhP) befehl eintragen.


    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SET lastlogin = '1218637929' WHERE username='Saalko' LIMIT 1' at line 3

    Diese Fehlermeldung kommt, was mach ich falsch?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. sandrock-jonas

    Kostenloser Webspace von sandrock-jonas

    sandrock-jonas hat kostenlosen Webspace.

    Hast du 'UPDATE tabellenname' vor SET stehen?

    <?php
    $sql = 'UPDATE tabellenname SET lastlogin="'.time().'" WHERE username="Saalko" LIMIT 1';
    ?>


    Außerdem musst du innerhalb des SQL-Befehls andere Anführungszeichen verwenden.

    Beitrag geändert: 13.8.2008 17:52:39 von sandrock-jonas
  4. Autor dieses Themas

    saalko

    saalko hat kostenlosen Webspace.

    So jetzt sorry, hab ich noch nicht korrigiert. Das Problem war ich hatte mir das schon länger nicht angeschaut und ich habe versucht mit einem update Befehl 2 veränderungen in der Datenbank zu verändern. Das klappt nicht. Und das wäre nicht dazu gekommen, haätte ich in der Datenbank statt Timestamp Int gesetzt für die Befehle. so ist alles durcheinandergekommen.

    Trotzdem danke, dass du dir die mühe gemacht hast jetzt funktioniert wieder alles. (hoff ich zumindest)
  5. e********l

    Wieso schreibst du den Timestamp nicht direkt über SQL in die Datenbank?

    Einfach via:
    <?php
    $sql = 'UPDATE tabellenname SET lastlogin = UNIX_TIMESTAMP() WHERE username="Saalko" LIMIT 1';
    ?>
  6. Außerdem musst du innerhalb des SQL-Befehls andere Anführungszeichen verwenden.
    Stimmt nicht, denn man kann beide Anführungszeichen problemlos verwenden. Ich verwende aus verschiedenen Gründen innerhalb für PHP fast immer die Apostrophs für Strings, weshalb sich da automatisch die normalen Anführungszeichen ergeben, aber auch nicht immer.


    Zum Thema: Warum setzt du nicht DEFAULT CURRENT_TIMESTAMP, dann musst du das überhaupt nicht mehr selbst setzen und es wird immer automatisch der aktuelle verwendet.

    Außerdem kannst du noch das Attribut ON UPDATE CURRENT_TIMESTAMP nutzen, um diesen TIMESTAMP immer auf den letzten Änderungszeitpunkt setzen zu lassen.

    Außerdem bietet sich auch die SQL-Funktion NOW() an (Synonyme: CURRENT_TIMESTAMP, CURRENT_TIMESTAMP()).

    Die Funktion UNIX_TIMESTAMP() ergibt bei mir immer den Wert 0000-00-00 00:00:00, also für Spalten vom Typ TIMESTAMP wohl eher ungeeignet. (Vermute aber mal, dass du diesen Typ benutzt).

    Edit:
    Genau das, was mein Nachredner geschrieben hat, wollte ich mit meinem letzten kleinen Absatz ausdrücken. Der von evil-devil angeführte SQL-Befehl UNIX_TIMESTAMP() ist für den Typ TIMESTAMP nicht geeignet, dafür müsste INT UNSIGNED oder ähnliches verwendet werden. Leider kann man nicht erkennen, welcher Typ verwendet werden soll. Ich würde sicherlich zum Typ TIMESTAMP raten, auch auf Grund der zuvor angeführten Möglichkeiten.

    Beitrag geändert: 15.8.2008 2:21:03 von pjhimself
  7. thomasba

    Co-Admin Kostenloser Webspace von thomasba

    thomasba hat kostenlosen Webspace.

    Ein UNIX-Timestamp ist etwas anderes als ein MySQL-Timestamp!

    Bei dem UNIX-Timestamp musst du den Datentyp INT verwenden, denn er gibt die sekunden seit dem 1. Januar 1970 00:00 Uhr (UTC) an.

    Der MySQL-Timestamp sieht z.B. so aus:
    2008-08-15 01:57:37
    Und als Unix-Tpmestamp:
    1218758257
  8. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!