Контроль кэша, возившаяся с mysqli-> recated_rows
-
11-10-2019 - |
Вопрос
У меня есть одна веб -страница (назовем ее A.HTML). A.HTML имеет немного JavaScript, который переключает страницу на динамическую страницу PHP (давайте назовут ее B.Php), используя простую document.location = "b.php". Анкет B.PHP запускает запрос MySQL на основе файлов cookie, который он видит, и возвращает результат на основе переменной mysqli-> intecual_rows. Тем не менее, каждый раз, когда страница переключается на mysqli-> recated_rows, равна 0, даже если таблица MySQL действительно изменяется так, как это должно. Интересно, что когда я перехожу прямо в B.Php, используя полосу URL (или обновляю страницу), тогда Mysqli-> Emffect_rows-1, как и должно быть.
Глядя на Wireshark, единственная разница между этими двумя запросами состоит в том, что второй (не Javascript) имеет линию с Контроль кэша: max-age = 0. Анкет Кто -нибудь знает, почему это повлияет на что -либо, и если я могу это исправить?
РЕДАКТИРОВАТЬ: вот код
$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();
Решение 3
Вовсе не был проблемой с кешем. Проблема возникает потому, что в этом конкретном случае та же самая строка обновляется непосредственно перед выполнением этого кода, и на данный момент не хватает времени (), чтобы отличаться. Таким образом, в то время как строка соответствует, в данных нет изменений, поэтому $ mysqli-> intecual_rows по-прежнему равна нулю. $ mysqli-> Информация показывает, что «ряды сопоставлены: 1, ряды изменились: 0».
Другие советы
Если это действительно кеш, испорченный ваш варево, то я думаю, что делаю
document.location="B.php?nocache=" + new Date().getTime();
решит проблему. Можете ли вы проверить и проверить, если это все?
Вы не показываете никакого кода, поэтому я могу только догадываться, но affected_rows()
Вернут NULL на обновление, которое ничего не меняет в таблице. Так что, вероятно, если вы перезагружаете свою страницу, вторая нагрузка покажет 0
Даже если обновление проходило на странице раньше.