我用的是idiorm+slim
\n\n我意识到以下更新查询,但我在控制台 phpmyadmin 中尝试并且它有效。
\n\nupdate empleado set `nieempleado`=\'11111\', nombre="Mickael", apellido1="aaa", apellido2="bbb", email="ma@gmail.com", puesto=0 where id = 1\nRun Code Online (Sandbox Code Playgroud)\n\n但在惯用语中错误 SQLSTATE[23000]
\n\n问题是什么?
\n\nif(count($error)==0)\n {\n\n $empleado = ORM::for_table(\'empleado\')->find_one($id);\n $empleado->nieempleado = $nie;\n $empleado->nombre = $nombre;\n $empleado->apellido1 = $apellido1;\n $empleado->apellido2 = $apellido2;\n $empleado->email = $email;\n $empleado->puesto = $puesto; \n if(!empty($telefono))\n {\n $empleado->telefono = $telefono;\n }\n if($usuario!==\'\')\n {\n $empleado->usuario_idusuario = $usuario;\n } \n $empleado->save();\n $app->redirect($app->urlFor(\'employeeList\'));\n }\nRun Code Online (Sandbox Code Playgroud)\n\n我的桌子是usuario:
\n\nCREATE TABLE IF NOT EXISTS `usuario` (\n `id` int(11) UNSIGNED AUTO_INCREMENT,\n `username` varchar(45) NOT NULL,\n `contrasenia` varchar(255) NOT NULL,\n `email` varchar(45) NOT NULL,\n `admin` tinyint(1) UNSIGNED NOT NULL DEFAULT 0,\n PRIMARY KEY (`id`)) \n ENGINE = InnoDB;\nRun Code Online (Sandbox Code Playgroud)\n\n和恩普莱多
\n\nCREATE TABLE IF NOT EXISTS `empleado` (\n `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,\n `nieempleado` VARCHAR(10) NOT NULL,\n `nombre` VARCHAR(45) NOT NULL,\n `apellido1` VARCHAR(50) NOT NULL,\n `apellido2` VARCHAR(50) NOT NULL,\n `email` VARCHAR(100) NOT NULL,\n `telefono` VARCHAR(10) NULL,\n `puesto` int(11) NOT NULL,\n `usuario_idusuario` int(11) UNSIGNED,\n PRIMARY KEY (`id`),\n INDEX `fk_empleado_usuario1_idx` (`usuario_idusuario` ASC),\n CONSTRAINT `fk_empleado_usuario_id_fk`\n FOREIGN KEY (`usuario_idusuario`)\n REFERENCES `usuario` (`id`)\n ON DELETE CASCADE\n ON UPDATE CASCADE\n )ENGINE = InnoDB;\nRun Code Online (Sandbox Code Playgroud)\n\n我收到以下错误:
\n\nType: PDOException\nCode: 23000\nMessage: SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`viversoft`.`empleado`, CONSTRAINT `fk_empleado_usuario_id_fk` FOREIGN KEY (`usuario_idusuario`) REFERENCES `usuario` (`id`) ON DELETE CASCADE ON UPDATE CASCADE)\nFile: C:\\wamp\\www\\viver\\vendor\\j4mie\\idiorm\\idiorm.php\nLine: 413\nTrace\n\n#0 C:\\wamp\\www\\viver\\vendor\\j4mie\\idiorm\\idiorm.php(413): PDOStatement->execute(Array)\n#1 C:\\wamp\\www\\viver\\vendor\\j4mie\\idiorm\\idiorm.php(1735): ORM::_execute(\'UPDATE `emplead...\', Array, \'default\')\n#2 C:\\wamp\\www\\viver\\routes\\employees.php(213): ORM->save()\n#3 [internal function]: {closure}(\'1\')\n#4 C:\\wamp\\www\\viver\\vendor\\slim\\slim\\Slim\\Route.php(462): call_user_func_array(Object(Closure), Array)\n#5 C:\\wamp\\www\\viver\\vendor\\slim\\slim\\Slim\\Slim.php(1326): Slim\\Route->dispatch()\n#6 C:\\wamp\\www\\viver\\vendor\\slim\\slim\\Slim\\Middleware\\Flash.php(85): Slim\\Slim->call()\n#7 C:\\wamp\\www\\viver\\vendor\\slim\\slim\\Slim\\Middleware\\MethodOverride.php(92): Slim\\Middleware\\Flash->call()\n#8 C:\\wamp\\www\\viver\\vendor\\slim\\slim\\Slim\\Middleware\\PrettyExceptions.php(67): Slim\\Middleware\\MethodOverride->call()\n#9 C:\\wamp\\www\\viver\\vendor\\slim\\slim\\Slim\\Slim.php(1271): Slim\\Middleware\\PrettyExceptions->call()\n#10 C:\\wamp\\www\\viver\\public\\index.php(55): Slim\\Slim->run()\n#11 {main}\nRun Code Online (Sandbox Code Playgroud)\n
您的错误意味着您尝试将一个值插入到表中的列usuario_idusuario中empleado,而该值不存在于表id中的列中usuario。如果没有看到正在运行的查询和表值,我无法为您提供更多信息。您需要确保进入的任何值都usuario_idusuario存在于id.
谢谢,
安德鲁
| 归档时间: |
|
| 查看次数: |
20247 次 |
| 最近记录: |