PDO exec 执行时出错后如果修改数据会被还原?
现象
FastAdmin 更新了 1127 版本,但是使用在线安装方式出现无法修改管理员密码的问题。
一直是默认的 admin 123456 密码。
分析
使用 VSCODE 加 PHP Debug 进行调试发现当执行以下语句时数据库没有被改变。
$pdo->query("UPDATE {$mysqlPrefix}admin SET username = '{$adminUsername}', email = '{$adminEmail}',password = '{$newPassword}', salt = '{$newSalt}' WHERE username = 'admin'");
但是我在这条语句后台加上一条查询 SELECT 显示数据是变了的。
结果
这个问题的原因是因为 user 表小了一行默认值导致。
但有以下两个疑问。
- PDO 执行出错没有报错。
- PDO exec 执行 SQL 后,再执行修改数据没有生效,查询时时的确是正确的数据,但是看数据库实际数据却是错的。