Question

J'ai une page Web (permet de l'appeler a.html). A.html a javascript qui commute la page à une page php dynamique (permet de l'appeler B.php), à l'aide d'un simple document.location = "B.php" . B.php exécute une requête mysql sur la base des cookies qu'il voit, et renvoie un résultat en fonction de la mysqli-> affected_rows variable. Cependant, chaque fois que la page passe sur mysqli-> affected_rows est égal à 0, même si la table mysql ne soit changé la façon dont il est censé. Fait intéressant, quand je vais directement à B.php en utilisant la barre d'URL (ou actualisez la page), puis mysqli-> affected_rows est 1, comme il est censé être.

En regardant wireshark, la seule différence entre les deux demandes GET est que le second (non-javascript) une a une ligne avec Cache-Control: max-age = 0 . Est-ce que quelqu'un sait pourquoi cela affecterait tout, et s'il y a une façon que je peux résoudre ce problème?

EDIT: Heres du code

    $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();
Était-ce utile?

La solution 3

était pas un problème avec le cache du tout. Le problème se pose parce que dans ce cas particulier, la même ligne est mise à jour juste avant ce code est exécuté, et il n'y a pas assez de délai pour l'instant () d'être différent. Ainsi, alors que les matchs de ligne, il n'y a pas un changement dans les données de façon $ mysqli-> affected_rows est toujours égale à zéro. $ mysqli-> Info montre que "Lignes présents: 1, lignes modifiées: 0".

Autres conseils

S'il est en effet le cache souring votre breuvage, alors je suppose que faire

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

va résoudre le problème. Pouvez-vous vérifier et vérifier si c'est-il?

Vous n'êtes pas montrer de code, donc je ne peux que deviner, mais affected_rows() retournera NULL sur une mise à jour qui ne change rien dans le tableau. On peut donc supposer, si vous rechargez votre page, la deuxième charge montrera 0 même si la RAN mise à jour par le biais de la page avant.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top