如何向有外键约束的字表中插入记录?
我在mysql中建了两个表
mysql> describe room;
+--------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+----------+------+-----+---------+-------+
| name | char(20) | NO | PRI | NULL | |
| doctor | char(20) | NO | | NULL | |
+--------+----------+------+-----+---------+-------+
2 rows in set (0.07 sec)
字表是
mysql> describe guahao;
+-------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| name | char(20) | NO | PRI | NULL | |
| sex | char(10) | NO | | NULL | |
| age | char(10) | NO | | NULL | |
| room | char(20) | NO | MUL | NULL | |
+-------+----------+------+-----+---------+-------+
4 rows in set (0.00 sec)
其中外键是room,on delete cascade on update cascade
我在命令行中向字表中插入数据没有问题,结果是
mysql> insert into guahao values
-> ('小张','男','30','皮肤科');
Query OK, 1 row affected (0.04 sec)
mysql> select * from guahao;
+--------+-----+-----+-----------+
| name | sex | age | room |
+--------+-----+-----+-----------+
| 王八 | 女 | 60 | 内科 |
| 钱二 | 男 | 40 | 脑科 |
| 赵一 | 男 | 20 | 五官科 |
| 孙三 | 女 | 35 | 骨科 |
| 寂寞 | 男 | 22 | 骨科 |
| 小张 | 男 | 30 | 皮肤科 |
| 小明 | 男 | 25 | 脑科 |
| 李四 | 男 | 30 | 皮肤科 |
+--------+-----+-----+-----------+
9 rows in set (0.00 sec)
但是我用PHP的时候,同样的插入语句,却会报错,错误信息如下:
Cannot add or update a child row: a foreign key constraint fails (`clinic`., CONSTRAINT `#sql-9e_13_ibfk_1` FOREIGN KEY (`room`) REFERENCES `room` (`name`) ON DELETE CASCADE ON UPDATE CASCADE)
请大神帮我看看问题在哪!跪求!哭了,问过一次,没解决问题。
回复讨论(解决方案)
为什么这个问题没有人回复?不是很难的问题啊
1、你的操作系统?
2、你的程序使用的字符集?
3、为了给帮助你的人提供便利,你应该给出
a、建表的 sql 指令
b、供测试用的 php 代码
吼吼,快来人解答~~
1、你的操作系统?
2、你的程序使用的字符集?
3、为了给帮助你的人提供便利,你应该给出
a、建表的 sql 指令
b、供测试用的 php 代码
1. 操作系统是MAC OS X
2. 字符集是
mysql> show variables like 'character%';
+--------------------------+--------------------------------------------------------+
| Variable_name | Value |
+--------------------------+--------------------------------------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/local/mysql-5.1.63-osx10.6-x86_64/share/charsets/ |
+--------------------------+--------------------------------------------------------+
8 rows in set (0.08 sec)
用于插入数据库的数据是从一个编码为UTF-8的HTML页面用post方法传到一个编码同样为UTF-8的PHP文件。
3.
建表的sql指令是在终端输入的 如下
mysql> create table room(name char(20) not null primary key, doctor char(20) not null) type=innodb;
Query OK, 0 rows affected, 1 warning (0.05 sec)
mysql> create table guahao -> (name char(20) not null primary key, -> sex char(10) not null,
-> age char(10) not null,
-> room char(20) not null,
-> foreign key(room) references room(name) on delete cascade on update cascade)
-> type=innodb;
Query OK, 0 rows affected, 1 warning (0.41 sec)
PHP代码是
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=GB18030"><title>医院门诊挂号系统</title><style type="text/css"> #table { margin-right: auto; margin-left: auto; }</style></head><body style="text-align: center"><?php$pname=$_POST['pname'];$psex=$_POST['psex'];$page=$_POST['page'];$room=$_POST['room'];if (empty($pname)||empty($psex)||empty($page)){?><p style="text-align:center">请输入完整的患者信息!</p><form method="post" action="Guahao.php"><table id="table"><tr><td>姓名:</td><td><input type="text" id="pname" /></td><td>性别:</td><td><input type="text" id="psex" /></td></tr><tr><td>年龄:</td><td><input type="text" id="page" /></td><td>科室:</td><td><input type="text" id="room" /></td></tr></table><input type="reset" value="重置" id="reset" style="width:100px;height:20px" /><input type="submit" value="挂号" id="submit" style="width:100px;height:20px" /></form><?php}else{ $db = new mysqli('127.0.0.1','clinicadmin','clinicadmin','clinic'); if (mysqli_connect_errno()) { echo "无法连接数据库,请稍后重试。"; exit; } $query = "insert into guahao values ('".$pname."', '".$psex."', '".$page."', '".$room."')"; $result = $db->query($query); if (!$result) { echo $db->error; echo"无法登陆!"; exit; } else { echo"<p>挂号成功!</p>"; } $db->close();?><a href="guahao.html">继续挂号</a><?php} ?></body></html>
字符集问题!
1、你的表中没有给字符类型字段设置字符集(默认 latin1)
2、你在连接数据库后没有声明字符集(缺少 set names 指令)
3、你说你使用了 utf-8 字符集,而程序中有 charset=GB18030
实际是使用了gbk 字符集
GB18030 是正式的国家标准,目前尚未在计算机中实现。所以实际使用的是其子集--GBK
忽略外键:SET FOREIGN_KEY_CHECKS = 0
字符集问题!
1、你的表中没有给字符类型字段设置字符集(默认 latin1)
2、你在连接数据库后没有声明字符集(缺少 set names 指令)
3、你说你使用了 utf-8 字符集,而程序中有 charset=GB18030
实际是使用了gbk 字符集
GB18030 是正式的国家标准,目前尚未在计算机中实现。所以实际使用的是其子集--GBK
那个问题我已经解决了,就是字符集问题,谢谢斑竹大神!这么多天才来结贴
字符集问题!
1、你的表中没有给字符类型字段设置字符集(默认 latin1)
2、你在连接数据库后没有声明字符集(缺少 set names 指令)
3、你说你使用了 utf-8 字符集,而程序中有 charset=GB18030
实际是使用了gbk 字符集
GB18030 是正式的国家标准,目前尚未在计算机中实现。所以实际使用的是其子集--GBK
……
版主你好,我用跟楼主一样的建表命令建表,但是不能插入和楼主一样的数据,提示foreign constraints fails,请问该怎么解决呢?

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제









Laravel은 직관적 인 플래시 방법을 사용하여 임시 세션 데이터 처리를 단순화합니다. 응용 프로그램에 간단한 메시지, 경고 또는 알림을 표시하는 데 적합합니다. 데이터는 기본적으로 후속 요청에만 지속됩니다. $ 요청-

PHP 클라이언트 URL (CURL) 확장자는 개발자를위한 강력한 도구이며 원격 서버 및 REST API와의 원활한 상호 작용을 가능하게합니다. PHP CURL은 존경받는 다중 프로모토콜 파일 전송 라이브러리 인 Libcurl을 활용하여 효율적인 execu를 용이하게합니다.

Laravel은 간결한 HTTP 응답 시뮬레이션 구문을 제공하여 HTTP 상호 작용 테스트를 단순화합니다. 이 접근법은 테스트 시뮬레이션을보다 직관적으로 만들면서 코드 중복성을 크게 줄입니다. 기본 구현은 다양한 응답 유형 단축키를 제공합니다. Illuminate \ support \ Facades \ http를 사용하십시오. http :: 가짜 ([ 'google.com'=> 'Hello World', 'github.com'=> [ 'foo'=> 'bar'], 'forge.laravel.com'=>

고객의 가장 긴급한 문제에 실시간 인스턴트 솔루션을 제공하고 싶습니까? 라이브 채팅을 통해 고객과 실시간 대화를 나누고 문제를 즉시 해결할 수 있습니다. 그것은 당신이 당신의 관습에 더 빠른 서비스를 제공 할 수 있도록합니다.

PHP 로깅은 웹 애플리케이션을 모니터링하고 디버깅하고 중요한 이벤트, 오류 및 런타임 동작을 캡처하는 데 필수적입니다. 시스템 성능에 대한 귀중한 통찰력을 제공하고 문제를 식별하며 더 빠른 문제 해결을 지원합니다.

기사는 PHP 5.3에 도입 된 PHP의 LSB (Late STATIC BING)에 대해 논의하여 정적 방법의 런타임 해상도가보다 유연한 상속을 요구할 수있게한다. LSB의 실제 응용 프로그램 및 잠재적 성능

이 기사에서는 프레임 워크에 사용자 정의 기능 추가, 아키텍처 이해, 확장 지점 식별 및 통합 및 디버깅을위한 모범 사례에 중점을 둡니다.

기사는 입력 유효성 검사, 인증 및 정기 업데이트를 포함한 취약점을 방지하기 위해 프레임 워크의 필수 보안 기능을 논의합니다.
