我将 Outlook 联系人文件导入到我的数据库中,然后将其显示到 html 表中。该表已创建,一切正常,但是当我尝试第二次上传时,所有名称和信息都会加倍。所以我想做的是如果名字和姓氏已经存在只是更新该行和该行中的所有单元格,而不是一遍又一遍地插入该行。
"CREATE TABLE contacts(PID INT NOT NULL AUTO_INCREMENT,PRIMARY KEY(PID),first_name CHAR(80),middle_name CHAR(80),last_name CHAR(80)"
我尝试过重复 key 更新/替换,但没有成功。
"INSERT INTO contacts (first_name,middle_name,last_name)
VALUES ('$first_name','$middle_name','$last_name')"
我想我的问题出在 auto_increment 和主键上,但我不太明白它们是如何工作的以及如何做到这一点。
最佳答案
您的INSERT
永远不会“更新”您现有的记录,因为您错过了“重复键”业务:
INSERT INTO sometable (field1, field2)
ON DUPLICATE KEY UDPATE field1=VALUES(field1), field2=VALUES(field2)
当然,只有当 INSERT 实际上会导致重复键冲突时,这才有效。表中唯一的唯一索引是主键,并且您根本没有向其中插入值,因此永远不会出现重复键违规。
您可能需要一个UPDATE
查询:
UPDATE yourtable
SET field1='value for field1', field2='value for field2'
WHERE id=$your_record_id
关于php - 如何更新 PHP/mysql 中的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25063827/