Вопрос

У меня есть одна веб -страница (назовем ее 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 Даже если обновление проходило на странице раньше.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top