Используя AJAX, я пытаюсь обновить таблицу 'forminfo' в базе данных MySQL, вызывая скрипт php через GET и предоставляя id (целочисленное значение). Тем не менее, когда я вызываю changeRequestedQ.php? Id = 4, например, ячейка таблицы будет обновляться до 0, а не 4.
Столбец «queryQ» отформатирован как INT (11). Когда я пытаюсь обновить $id = 4
вручную, оно работает, и ячейка таблицы обновляется до 4.
require_once("msqli_config.php");
$id = $_GET['id']; // doesn't work, table cell updates to 0, whatever integer value I pass through file.php?id=<int>
$id = (int)$_GET['id']; // no change in outcome
$id = 4; // works, table cell updates to 4
try {
$stmt1 = $mysqli->prepare("UPDATE forminfo SET requestedQ = ? WHERE id = 1;");
$stmt1->bind_param("i", $id);
$stmt1->execute();
$stmt1->close();
} catch (Exception $e) {
error_log($e);
exit();
}
$mysqli->close();
Я пытался заставить PHP проанализировать значение как целое число, используя (int)$_GET['id']
, но не было никакой разницы.
Дополнительные варианты (без использования подготовленных выписок):
$sql = "UPDATE forminfo SET requestedQ = '4' WHERE id = 1";
$mysqli->query($sql); // updates to 4
echo $sql; // UPDATE forminfo SET requestedQ = '4' WHERE id = 1
$sql = "UPDATE forminfo SET requestedQ = 4 WHERE id = 1";
$mysqli->query($sql); // updates to 4
echo $sql; // UPDATE forminfo SET requestedQ = 4 WHERE id = 1
$sql = "UPDATE forminfo SET requestedQ = '" . $id . "' WHERE id = 1";
$mysqli->query($sql); // updates to 0
echo $sql; // UPDATE forminfo SET requestedQ = '4' WHERE id = 1
$sql = "UPDATE forminfo SET requestedQ = " . $id . " WHERE id = 1";
$mysqli->query($sql); // updates to 0
echo $sql; // UPDATE forminfo SET requestedQ = 4 WHERE id = 1
UPDATE
Будучи в отчаянии, так как я не мог сообразить разницу в результатах между ранее упомянутыми фрагментами кода, я попытался, если это могло быть определенной проблемой браузера. Оказывается, что приведенный выше код работает как чудо в MS Edge, а также в Google Chrome в режиме инкогнито, но не в обычном сеансе. Как это может быть? Это связано с кэшированием? Я отключил кеш в инструментах разработчика, но это не помогло ...