Domanda

Ho una pagina web (consente di chiamare a.html). A.html ha alcuni javascript che commuta la pagina a una pagina dinamica php (consente di chiamare b.php), utilizzando un semplice document.location = "b.php" . B.php esegue una query mysql in base ai cookie che vede, e restituisce un risultato in base alla mysqli-> affected_rows variabile. Tuttavia, ogni volta pagina commuta mysqli-> affected_rows è uguale a 0, anche se la tabella MySQL venga cambiato il modo in cui dovrebbe. È interessante notare che, quando vado dritto al b.php utilizzando la barra degli URL (o aggiornare la pagina) poi mysqli-> affected_rows è 1, come dovrebbe essere.

Guardando Wireshark, l'unica differenza tra le due richieste GET è che il secondo (non-JavaScript) si ha una linea con Cache-Control: max-age = 0 . Qualcuno sa perché questo potrebbe influenzare qualsiasi cosa, e se c'è un modo per risolvere questo problema?

EDIT: Heres' il codice

    $req = $mysqli->prepare('update users set sts=NOW() where i=? and sid=? and sip=? and NOW()-sts <= '.$authentication_timeout.';');
    if ($mysqli->error) {
        log_mysql_error($mysqli);
        die('Unexpected error:'.$mysqli->error);
    }
    $req->bind_param('sss',$uid,$sid,$_SERVER['REMOTE_ADDR']);
    $req->execute();

    print $mysqli->affected_rows;
    $req->close();
È stato utile?

Soluzione 3

Non è stato un problema con la cache a tutti. Il problema nasce dal fatto che in questo caso particolare della stessa riga viene aggiornata immediatamente prima dell'esecuzione di questo codice, e non c'è abbastanza tempo di ritardo per NOW () di essere diversi. Così, mentre le partite di fila, non c'è un cambiamento nel modo di dati $ mysqli-> affected_rows è ancora uguale a zero. $ mysqli-> Info mostra che "Righe trovati: 1, righe modificate: 0".

Altri suggerimenti

Se è davvero la cache di acidificazione vostra birra, allora immagino fare

document.location="B.php?nocache=" + new Date().getTime();

risolverà il problema. Si può controllare e verificare se questo è tutto?

Lei non è mostrare alcun codice in modo che posso solo immaginare, ma affected_rows() restituirà NULL su un aggiornamento che non cambia nulla nella tabella. Quindi, presumibilmente, se si ricarica la pagina, il secondo carico mostrerà 0 anche se l'aggiornamento tramite corse sulla pagina prima.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top