PHP在MySQL中的更新查询不起作用,但SELECT和INSERT操作是可以的。
PHP在MySQL中的更新查询不起作用,但SELECT和INSERT操作是可以的。
在尝试更新数据库中的条目时,无法成功更新。但是,当我尝试从同一个数据库中选择一个值时,却能够正常工作。我不确定为什么会出现这种情况。
更新查询:
$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); // 出错时 if (!mysqli_stmt_execute($stmt)) { throw new Exception($conn->error); } var_dump($stmt); $stmt->close(); $conn->close(); } catch (Exception $e) { print_r($e); }
对于`$stmt`的`var_dump`返回:
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) }
可能是显而易见的问题,我可能错过了。非常感谢指点方向。
更新:
我的表设置如下:
[![table setup](https://i.stack.imgur.com/zXgd2.png)](https://i.stack.imgur.com/zXgd2.png)
其中有一个条目:
- token = ABCdefg123adc........ <-- 示例字符串,包含数字和字母
- expires = 60
- created_at = 2019-12-01 08:57:26
- id = 1
我尝试通过以下方式访问表:
$sql = "INSERT INTO instagram (token, expires) VALUES (?, ?)";
这和`SELECT`一样有效。
我还发现`if (!mysqli_stmt_execute($stmt))`会发送两次条目,所以我将其删除。尽管如此,更新条目仍然无法工作。
我还输出了`$tokenAccess`和`$tokenExpires`的值。结果包含了预期的`$tokenExpires`的`60`和`$tokenAccess`的长期访问令牌。