致命错误:未捕获的 PDOException:SQLSTATE[23000]:违反完整性约束:键“uq_mobile”的重复条目“”

问题描述 投票:0回答:1

尽管尝试调试,但我无法解决这个致命错误——问题是 mySQL Insert 语句

错误是:

致命错误:未捕获的 PDOException:SQLSTATE[23000]:完整性 违反约束:1062 中键“uq_mobile”的重复条目“” /home/path/public_html/signupvalidate.php:51 堆栈跟踪:#0 /home/path/path/signupvalidate.php(51): PDOStatement->执行(数组) #1 {main} 被扔进 /home/path/path/signupvalidate.php 第 51 行

什么是“uq_mobile”? 这不是我的代码或 mySQL 数据库或表设置中任何地方的短语

插入语句是:

$stmtInsertProfile = $conn->prepare('INSERT INTO users_profile (userid, firstName, middleName, lastName, mobile, email, country, registeredAt, lastLogin, intro, userProfile)
                                    VALUES (:userid, :firstName, :middleName, :lastName, :mobile, :email, :country, :registeredAt, :lastLogin, :intro, :userProfile)');

$stmtInsertProfile->execute([
    // 'id' => '', // do not specific the auto increment primary key on insert commands 
    'userid' => $fetchedUserID,
    'firstName' => '',
    'middleName' => '',
    'lastName' => '',
    'mobile' => '',
    'email' => $fetchedUserEmail,
    'country' => '',
    'registeredAt' => '',
    'lastLogin' => '',
    'intro' => '',
    'userProfile' => ''
]);

我导出的表结构是:

CREATE TABLE `users_profile` (
  `id` bigint(20) NOT NULL,
  `userid` int(11) NOT NULL,
  `firstName` varchar(50) DEFAULT NULL,
  `middleName` varchar(50) DEFAULT NULL,
  `lastName` varchar(50) DEFAULT NULL,
  `mobile` varchar(15) DEFAULT NULL,
  `email` varchar(50) DEFAULT NULL,
  `userBio` text NOT NULL,
  `country` varchar(32) NOT NULL,
  `registeredAt` int(11) NOT NULL,
  `lastLogin` int(11) DEFAULT NULL,
  `intro` tinytext DEFAULT NULL,
  `userProfile` text DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci;

表中的主键是“id”,因此 INSERT 命令中不会引用它。 $fetchedUserEmail (有效的电子邮件字符串)和 $fetchedUserID (有效的整数)都是变量,当我在调试期间输出它们时,它们包含预期值

php mysql
1个回答
0
投票

我发现问题了。

在 INSERT 语句中,我在“mobile”字段中输入了一个整数,现在它可以工作了。

“移动”=>“5555”,

奇怪..我猜mySQL不喜欢“mobile”作为字段名称...

© www.soinside.com 2019 - 2024. All rights reserved.