Если я пытаюсь обновить запись в моей базе данных, она не работает, как и не обновлять. Но когда я пытаюсь выбрать значение из той же базы данных, это прекрасно работает. Я не уверен, почему это так.
Запрос на обновление:
$id = 1;
try {
$conn = db();
$sql = "UPDATE instagram SET token=?, expires=? WHERE id=$id";
$stmt = mysqli_stmt_init($conn);
if (!mysqli_stmt_prepare($stmt, $sql)) {
throw new Exception($conn->error);
}
mysqli_stmt_bind_param($stmt, "si", $tokenAccess, $tokenExpires);
mysqli_stmt_execute($stmt);
// on error
if (!mysqli_stmt_execute($stmt)) {
throw new Exception($conn->error);
}
var_dump($stmt);
$stmt->close();
$conn->close();
}
catch (Exception $e) {
print_r($e);
}
var_dump
для $stmt
возвращает:
object(mysqli_stmt)#4 (10) {
["affected_rows"]=> int(1)
["insert_id"]=> int(0)
["num_rows"]=> int(0)
["param_count"]=> int(2)
["field_count"]=> int(0)
["errno"]=> int(0)
["error"]=> string(0) ""
["error_list"]=> array(0) { }
["sqlstate"]=> string(5) "00000"
["id"]=> int(1)
}
Это, вероятно, на виду, и я упускаю очевидное. Высоко ценится указатель в правильном направлении.
ОБНОВЛЕНИЕ:
Моя таблица настроена следующим образом:
Имеется одна запись, где:
- token = ABCdefg123ad c ........ <- пример строки, содержит цифры и буквы </li>
- expires = 60
- create_at = 2019-12-01 08:57:26
- id = 1.
Я пытался получить доступ к таблице через:
$sql = "INSERT INTO instagram (token, expires) VALUES (?, ?)";
Это, как и SELECT
, работает.
Я также обнаружил, что if (!mysqli_stmt_execute($stmt))
отправлял запись дважды, поэтому я убрал ее. Тем не менее, обновление записи не работает.
Я также повторил значения для $tokenAccess
и $tokenExpires
. Результат содержит 60
для $tokenExpires
и маркер долгосрочного доступа для $tokenAccess
, как и ожидалось.