Cache-Control avec mysqli- déconner> affected_rows
-
11-10-2019 - |
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();
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.