Visualizzazione dei risultati da 1 a 6 su 6

Discussione: MySQL problema ranking

  1. #1

    MySQL problema ranking

    Sto tendando di fare un update che inserisca una sorta dl classifica nella tabella ranking in base ai points. Sono ben accetti altri metodi, perche questo mi da errore e non so come risolverlo.

    tabella ranking
    codice:
    +----+------+--------+
    | id | rank | points |
    +----+------+--------+
    |  2 |   2  |   20   |
    +----+------+--------+
    |  3 |   1  |   45   |
    +----+------+--------+
    |  4 |   3  |   10   |
    +----+------+--------+
    Query
    codice:
    SET @r=0;
    UPDATE ranking SET rank=@r:=(@r+1) ORDER BY points DESC
    L'errore che mi da phpmyadmin

    codice:
    SET @r=0;# MySQL ha restituito un insieme vuoto (i.e. zero righe).
    
    UPDATE ranking SET rank=@r:=(@r+1) ORDER BY points DESC# MySQL ha restituito un insieme vuoto (i.e. zero righe).

    Nota: id e' una primary key autoincrement.

    La query funziona ma mi da errore.
    Ho fatto un cron-job che mi restituisce una mail di errore ogni volta che esegue la query
    Il Cavaliere dei Sogni

  2. #2
    l'update restituisce 0 righe perche' non ha modificato nulla. Tutto rimane come prima.
    La prima volta che lo esegui rende tre righe ma se ripeti la query rende zero.

    E poi il numero delle righe modificate (zero) non e' un errore e' solo il report di quanto eseguito.
    La mail di errore dovresti inviarla solo se ricevi un FALSE dalla query.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Originariamente inviato da piero.mac
    l'update restituisce 0 righe perche' non ha modificato nulla. Tutto rimane come prima.
    La prima volta che lo esegui rende tre righe ma se ripeti la query rende zero.

    E poi il numero delle righe modificate (zero) non e' un errore e' solo il report di quanto eseguito.
    La mail di errore dovresti inviarla solo se ricevi un FALSE dalla query.
    ehm perdonami ma non ho capito.
    la querry funziona, aggiorna il rank correttamente.
    Ma dal momento che e' un cron-job che viene eseguito ogni 15 minuti a me arriva ogni volta che viene avviata la query una mail di errore

    "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 'UPDATE ranking SET rank= @r:= (@r+1) ORDER BY points DESC' at line 2"
    Il Cavaliere dei Sogni

  4. #4
    Originariamente inviato da narghat
    ehm perdonami ma non ho capito.
    la querry funziona, aggiorna il rank correttamente.
    Ma dal momento che e' un cron-job che viene eseguito ogni 15 minuti a me arriva ogni volta che viene avviata la query una mail di errore

    "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 'UPDATE ranking SET rank= @r:= (@r+1) ORDER BY points DESC' at line 2"
    perdonami tu ma quel chi non capisce sono io.

    Quello che dici riguardo la segnalazione nel primo post e' ben diverso da quello che affermi in quest'ultimo:

    1) # MySQL ha restituito un insieme vuoto (i.e. zero righe).

    2) You have an error in your SQL syntax;

    siccome parla di errore di sintassi errore di sintassi sia. Ma devi postare lo script che genera l'errore. Forse esegui il set variabile e l'update con lo stesso comando mysql_query. Ma se da errore di sintassi e' certo che l'update non fa nulla se non un errore di sintassi.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Allora, io ho impostato un cron job,
    che fa eseguire il seguente script ogni 15 minuti:

    codice:
    <?php
    require "public_html/game/config.php";
    connect();
    
    mysql_query("SET @r=0;	UPDATE ranking SET rank= @r:=(@r+1) ORDER BY points DESC") or die(mysql_error());
    ?>
    Il server ogni 15 minuti mi invia la mail segnalandomi qualcosa che non va.

    codice:
    Cron <mionome@a2s37> /usr/local/bin/php -q /home/mionome/cron/game_rankings.php
    da Cron Daemon a te 
    
    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 'UPDATE ranking SET rank= @r:=(@r+1) ORDER BY points DESC' at line 2

    In ogni caso i problemi li ho anche se incollo la query dentro a phpmyadmin, vorrei solo capire come risolvere la cosa.
    Il Cavaliere dei Sogni

  6. #6
    Originariamente inviato da piero.mac
    Forse esegui il set variabile e l'update con lo stesso comando mysql_query.
    Ehm, trovato l'errore, grazie per la segnalazione, avevo appunto inviato tutto nello stesso comando mysql_query, infatti vedendo bene, la cosa non funzionava come doveva, ora si.

    Spero che cosi sia corretto.

    mysql_query("SET @r=0") or die(mysql_error());
    mysql_query("UPDATE ranking SET rank= @r:=(@r+1) ORDER BY points DESC") or die(mysql_error());
    Il Cavaliere dei Sogni

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.