我正在尝试为单个按钮创建一个代码,它将执行两个操作中的任何一个,如果用户当前没有记录,它将添加到数据库,而如果用户将更新用户的记录已有记录。我这样做了:
if() {
mysql_query("INSERT INTO table...");
}
else {
mysql_query("UPDATE table SET...");
}
有可能吗?
答案 0 :(得分:2)
是的,你写的东西会起作用。如果你有办法知道是否已经存在一行而没有为这段代码做一个额外的查询,那么就像你写的一样。
但是,如果您计划从表中首先SELECT
查看是否存在行,然后有条件地INSERT
或UPDATE
,则会执行超出必要的查询。
最好是:
在表格上有PRIMARY KEY或其他约束可防止重复INSERT
。然后发出INSERT ... ON DUPLICATE KEY UPDATE
个查询。这将尝试INSERT
该行,如果它是重复的,则会自动执行指定的UPDATE
到该行。
发出UPDATE
查询并检查mysql_affected_rows
以查看它是否更新了现有行。如果没有,则发出INSERT
查询以创建新行。
哪一个更合适取决于您的申请。
答案 1 :(得分:2)
您可以使用INSERT ... ON DUPLICATE KEY UPDATE
语法,如:
INSERT INTO table (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE c=c+1;
http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html
答案 2 :(得分:1)
答案 3 :(得分:1)
是的,您可以尝试插入,如果失败则尝试更新。
但是您可以使用MYSQL sql“REPLACE”关键字,如果新记录不存在则会插入新记录或删除现有记录并插入新记录。
您还可以使用INSERT ... ON DUPLICATE KEY UPDATE语法 (在此解释 - Link to MYSQL ref似乎最符合您的要求。
答案 4 :(得分:0)
是的,这是可能的
首先编写一个查询,以检查记录是否已存在。
答案 5 :(得分:0)
是的,有可能,它会起作用