Visualizzazione risultati 1 fino 5 di 5

Discussione: UNIX_TIMESTAMP(NOW())

  1. #1
    risorsenet non è connesso Utente giovane
    Data registrazione
    16-06-2003
    Messaggi
    30

    Predefinito

    Ciao, sono alle prese con le sessioni.
    Ho una query che deve aggiornare dei dati in base ad unix_timestamp.
    questa:
    $sql_update = "UPDATE `utenti` SET 'last_login' = UNIX_TIMESTAMP(NOW()) WHERE `id_user` = '{$id_user}'";

    Il problema è che se stampo la query ho queto risultato:
    UPDATE `utenti` SET 'last_login' = UNIX_TIMESTAMP(NOW()) WHERE `id_user` = '1'

    Domanda??
    Come cavolo faccio a ottenere il valore numerico di unix_timestamp

    bye

  2. #2
    Guest

    Predefinito

    Citazione Originalmente inviato da risorsenet
    Ciao, sono alle prese con le sessioni.
    Ho una query che deve aggiornare dei dati in base ad unix_timestamp.
    questa:
    $sql_update = "UPDATE `utenti` SET 'last_login' = UNIX_TIMESTAMP(NOW()) WHERE `id_user` = '{$id_user}'";

    Il problema è che se stampo la query ho queto risultato:
    UPDATE `utenti` SET 'last_login' = UNIX_TIMESTAMP(NOW()) WHERE `id_user` = '1'

    Domanda??
    Come cavolo faccio a ottenere il valore numerico di unix_timestamp

    bye
    usa l'MKTIME di php (http://www.php.net)

  3. #3
    risorsenet non è connesso Utente giovane
    Data registrazione
    16-06-2003
    Messaggi
    30

    Predefinito

    usa l'MKTIME di php (http://www.php.net)
    mmmm...non mi pare faccia la stessa cosa.
    se non ho capito male mktime utilizza unix timestamp(che serve per contare) e ne ottiene ora minuti secondi ecc....

    sbaglio?

  4. #4
    L'avatar di heracleum
    heracleum non è connesso Utente storico
    Data registrazione
    21-01-2004
    Messaggi
    3,333

    Predefinito

    Citazione Originalmente inviato da risorsenet
    Il problema è che se stampo la query ho queto risultato:
    UPDATE `utenti` SET 'last_login' = UNIX_TIMESTAMP(NOW()) WHERE `id_user` = '1'
    Allora prima di tutto attento che hai un errore di sintassi SQL:
    invece di 'last_login' dovresti usare gli altri apici `last_login`(oppure non metterli per niente, è uguale se non hai conflitti di nomi), altrimenti ti dà errore perché con l'apice singolo così: 'valore' si indicano SOLO i valori stringa del DB.

    Secondo non vedo il problema, oppure non ho capito bene cosa ti aspettavi di vedere quando stampi la stringa di query. Mi spiego, UNIX_TIMESTAMP() è una funzione MySQL! non ti dà immediatamente il risultato solo stampando a schermo la stringa di query (come farebbe una variabile o funzione PHP). Dunque va bene così, anzi ti basta solo indicare UNIX_TIMESTAMP() (il NOW() è superfluo, se non indichi nulla dà per scontato che vuoi il valore timestamp della data odierna).
    Soltanto quando verrà eseguita la query, nel campo last_login ti troverai comunque il valore timestamp giusto. Capito? Cioè per vedere il valore devi "aspettare" che la query venga eseguita da MySQL.
    Per lavorare con gli unix_timestamp di solito non è necessario passare per la funzione mktime() (che vuole come parametro singoli valori, che invece nello unix_timestamp hai riuniti in un solo valore intero).
    Per esempio se, una volta inserita, ripescandola dal db, vuoi lavorare su quella data ti basterà usare la funzione date() così:UNIX_TIMESTAMP()

    [code:1:15daff9de4]...
    $row=mysql_fetch_array($result);
    $lastlogin = date('G:i:s D j M Y', $row['last_login']);
    echo "Ultimo accesso: $lastlogin";[/code:1:15daff9de4]

    Aggiungo:
    Se per curiosità vuoi vedere SUBITO che valore ti restituisce UNIX_TIMESTAMP() puoi andare in phpMyAdmin e nell'area di testo SQL (per testare le query) puoi scrivere semplicemente:

    SELECT UNIX_TIMESTAMP()

    e vedi che valore ti ritorna
    Avvertimento: richiedere in privato questioni tecniche produrrà inevitabilmente una supercazzola prematurata come risposta. (5 served)

  5. #5
    risorsenet non è connesso Utente giovane
    Data registrazione
    16-06-2003
    Messaggi
    30

    Predefinito

    Mi spiego, UNIX_TIMESTAMP() è una funzione MySQL! non ti dà immediatamente il risultato solo stampando a schermo la stringa di query (come farebbe una variabile o funzione PHP). Dunque va bene così, anzi ti basta solo indicare UNIX_TIMESTAMP() (il NOW() è superfluo, se non indichi nulla dà per scontato che vuoi il valore timestamp della data odierna).
    mmmm, già, non ci avevo pensato, la query mi dava un errore, mentre togliendo l'ultima parte funzionava, facendola poi stampare ho visto che non mi dava la stringa di numeri e ho attribuito a quello il problema.

    Cmq ora ho stravolto un po lo script e la query funziona a dovere.

    grazie :D

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •