查看: 1044|回复: 10
|
PHP : DUPLICATE ENTRY 问题
[复制链接]
|
|
这几行coding,
$sql="Select * from Form WHERE id = '$id'";
$sql = ("UPDATE Form SET name = '$name', ic = '$ic', sex = '$sex', s_num = '$s_num', s_name = '$s_name' WHERE id = '$id'");
$sql = ("INSERT INTO Form(id,name,ic,sex,s_num,s_name) VALUES ('$id','$name','$ic','$sex','$s_num','$s_name')");
$result = mysql_query($sql, $DBConn) or die ("Error in query: $sql. " . mysql_error());
echo"<font = -1>done</font>";
只要insert和update功能混在一起,
就会出现Duplicate Entry key 1问题,
虽然我知道是因为id那里重复相撞了,
请问我要怎样做,
才能使到我update data时,
id不会相撞产生duplicate entry的问题。
谢谢。 |
|
|
|
|
|
|
|
发表于 22-12-2005 10:48 AM
|
显示全部楼层
不明白你的UPDATE和INSERT功能混在一起是什么意思。
照你的Code来看,你的Query最后只有Assign一个INSERT的Statement。之前的两个Statement已经被re-assign了。
$sql = "INSERT INTO Form(id,name,ic,sex,s_num,s_name) VALUES ('$id','$name','$ic','$sex','$s_num','$s_name')";
id可以用MYSQL的AUTO_INCREMENT功能,让MYSQL来管理id的分配就可以避免这样的问题。 |
|
|
|
|
|
|
|

楼主 |
发表于 22-12-2005 10:55 AM
|
显示全部楼层
原帖由 kfchai1982 于 22-12-2005 10:48 AM 发表
不明白你的UPDATE和INSERT功能混在一起是什么意思。
照你的Code来看,你的Query最后只有Assign一个INSERT的Statement。之前的两个Statement已经被re-assign了。
$sql = "INSERT INTO Form(id,name,ic,se ...
我想要在interface里
将资料insert进去database后,
然后再改资料update database,
请问,
我的code里需要加些什么才能满足到update不会被re-assign?
例如if statement 或 switch statement。 |
|
|
|
|
|
|
|
发表于 22-12-2005 11:12 AM
|
显示全部楼层
你之前那个Code的问题是:
- $a = 1;
- $a = 2;
- $a = 3;
- echo $a; //result: 3
复制代码
$a的值最终是3,因为之前两个已经被覆盖掉了。
mysql_query和操作MySQL的界面是一样的,一次只能执行一个query。
如果你要同时Insert和Update资料的话,必须要先执行一次INSERT,如果成功的话再执行一次UPDATE。
好像这样:
$sql = "INSERT .....";
mysql_query($sql,$db) or die("blablabla");
$sql = "UPDATE....";
mysql_query($sql,$db) or die("blablabla"); |
|
|
|
|
|
|
|
发表于 22-12-2005 12:19 PM
|
显示全部楼层
如果是会被遮盖掉的话,那么不如用reusable code。 |
|
|
|
|
|
|
|
发表于 23-12-2005 07:21 AM
|
显示全部楼层
先做一次select 如果资料不存在就INSERT, 存在就update |
|
|
|
|
|
|
|
发表于 24-12-2005 03:47 PM
|
显示全部楼层
觉得麻烦~ 干脆DEL过后INS,又是UPDATE又是INSERT |
|
|
|
|
|
|
|
发表于 24-12-2005 04:20 PM
|
显示全部楼层
原帖由 忙里偷闲 于 22-12-2005 10:55 AM 发表
我想要在interface里
将资料insert进去database后,
然后再改资料update database,
请问,
我的code里需要加些什么才能满足到update不会被re-assign?
例如if statement 或 switch statement。
如果說你原本的 sql 是
$sql = ("INSERT INTO Form(id,name,ic,sex,s_num,s_name) VALUES ('$id','$name','$ic','$sex','$s_num','$s_name')");
$sql = ("UPDATE Form SET name = '$name', ic = '$ic', sex = '$sex', s_num = '$s_num', s_name = '$s_name' WHERE id = '$id'");
可以改成
$sql = ("INSERT INTO Form(id,name,ic,sex,s_num,s_name) VALUES ('$newid','$newname','$newic','$newsex','$news_num','$news_name')");
也就是說在 insert 之前把需要更改的準備好 |
|
|
|
|
|
|
|

楼主 |
发表于 27-12-2005 01:27 PM
|
显示全部楼层
有没有php 里 insert update add delete的功能coding example,
供参考用的,谢谢。 |
|
|
|
|
|
|
|
发表于 27-12-2005 11:20 PM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 11-1-2006 11:59 AM
|
显示全部楼层
$sql = ("UPDATE Form SET name = '$name', ic = '$ic', sex = '$sex', s_num = '$s_num', s_name = '$s_name' WHERE id = '$id'");
可以这样放吗??
"id = '$id'"
这样一来 $id 就不是数字了.. 而是'$id' 是string了. |
|
|
|
|
|
|
| |
本周最热论坛帖子
|