无法写入;重复键。检查唯一约束。
你的PHP应用在使用PDO连接MySQL时遇到了重复键错误:
'pdo_code' => '23000',
'db_code' => 1022,
'db_error' => 'Can\'t write; duplicate key in table'
$sql = "INSERT IGNORE INTO users (username, email) VALUES (?, ?)";
$stmt = $pdo->prepare($sql);
$stmt->execute([$username, $email]);
$affectedRows = $stmt->rowCount();
$sql = "INSERT INTO users (username, email, last_login) "
. "VALUES (?, ?, NOW()) "
. "ON DUPLICATE KEY UPDATE last_login = NOW()";
$stmt = $pdo->prepare($sql);
$stmt->execute([$username, $email]);
$checkSql = "SELECT COUNT(*) FROM users WHERE username = ?";
$checkStmt = $pdo->prepare($checkSql);
$checkStmt->execute([$username]);
$exists = $checkStmt->fetchColumn() > 0;
if ($exists) {
$updateSql = "UPDATE users SET email = ?, last_login = NOW() WHERE username = ?";
$updateStmt = $pdo->prepare($updateSql);
$updateStmt->execute([$email, $username]);
} else {
$insertSql = "INSERT INTO users (username, email) VALUES (?, ?)";
$insertStmt = $pdo->prepare($insertSql);
$insertStmt->execute([$username, $email]);
}