php - 表中的意外数据
问题描述
我有一个在表中插入或替换数据的查询,它在本地主机上工作正常,但在真实主机上它表现得很奇怪。
查询:
REPLACE INTO sessions (
user_id, authorization_token, authorization_token_expires, refresh_token, refresh_token_expires
) VALUES (
:user_id, :authorization_token, :authorization_token_expires, :refresh_token, :refresh_token_expires
);
问题是当我在表中插入一个新行时,它会插入一个 user_id = 0 的行,并在每次插入/替换查询时更新它。由于这在本地工作正常,我认为服务器/DBMS 设置有问题。
编辑
的结果SHOW CREATE TABLE sessions
CREATE TABLE `sessions` (
`user_id` int(11) NOT NULL,
`authorization_token` varchar(255) NOT NULL,
`authorization_token_expires` varchar(10) NOT NULL,
`refresh_token` varchar(255) NOT NULL,
`refresh_token_expires` varchar(10) NOT NULL,
PRIMARY KEY (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
编辑 2
似乎问题出在pdo->lastInsertId();
. 我有一个在我的users
表中插入用户并返回 lastInsertId 的函数。如果我var_dump()
这个函数结果看起来像string(1) "1"
。如果我将函数的结果传输到在表中插入行的函数,sessions
我会得到上面描述的奇怪结果。但是,如果我将像“1”这样的简单字符串传输到插入会话的函数中,我会得到正确的行为。绝对不知道发生了什么:/
解决方案
推荐阅读
- java - 人脸检测和使用边界框提取人脸并创建新位图
- r - 如何在非常大的数据集中找到异常值变量?
- android - 我在测试我的 android 应用程序时遇到问题,该应用程序在我的设备上运行良好,但在 MI 手机上崩溃
- keyboard - Ubuntu VMWare 虚拟机中的大写锁定问题
- ios - Swift 为现有的孩子增加价值
- python - Matplotlib v 3 长度不匹配 ValueError:预期轴有 x 个元素,新值有 x+1 个元素
- r - 使用 lapply 创建要在循环中使用的 R 函数
- python - 我正在使用 jupyter 我无法找到视频文件
- php - MySQLi 根据列数量值重复行
- c - 了解对象到源代码的反编译