佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1044|回复: 10

PHP : DUPLICATE ENTRY 问题

[复制链接]
发表于 22-12-2005 10:34 AM | 显示全部楼层 |阅读模式
这几行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的问题。
谢谢。
回复

使用道具 举报


ADVERTISEMENT

发表于 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的问题是:

  1. $a = 1;
  2. $a = 2;
  3. $a = 3;
  4. 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
回复

使用道具 举报

Follow Us
发表于 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 之前把需要更改的準備好
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 27-12-2005 01:27 PM | 显示全部楼层
有没有php 里 insert update add delete的功能coding example,
供参考用的,谢谢。
回复

使用道具 举报

发表于 27-12-2005 11:20 PM | 显示全部楼层
原帖由 忙里偷闲 于 27-12-2005 01:27 PM 发表
有没有php 里 insert update add delete的功能coding example,
供参考用的,谢谢。



http://php.net/manual/en/ref.mysql.php 找找看吧...
回复

使用道具 举报

jim_lwloon 该用户已被删除
发表于 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了.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 6-3-2025 03:21 AM , Processed in 2.030304 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表