学习Mysql并有大量问题......
我可以通过简单的方式达到预期的效果:
$mysqli->query("INSERT results SET user_id = '".$user_data[0]['user_id']."', logo_id = '".$mysqli->real_escape_string($_GET['logo_id'])."'");
$mysqli->query("UPDATE results SET result_tries = result_tries +1 WHERE logo_id = '".$mysqli->real_escape_string($_GET['logo_id'])."' AND user_id = '".$user_data[0]['user_id']."'");
我在桌面上有数据库unique check
,因此logo_id和user_id应该是唯一的。因此,如果存在行,则第一次查询失败,并执行第二次更新...,但这感觉有点破解......有更好的方法吗?
答案 0 :(得分:9)
尝试
$user_id = $user_data[0]['user_id'];
$logo_id = $mysqli->real_escape_string($_GET['logo_id']);
$sql = "INSERT INTO results (user_id, logo_id, result_tries)
VALUES ('$user_id', '$logo_id', 0)
ON DUPLICATE KEY UPDATE result_tries = result_tries + 1";
$mysqli->query($sql);
答案 1 :(得分:1)
这是我最优雅的解决方案,因为我没有任何唯一的索引列,需要使用where子句才能实现我的目标:
DELETE FROM assignment_status WHERE assignment_id = 114 AND user_id = 1;
INSERT INTO assignment_status (assignment_id, user_id, status, note) VALUES (114, 1, 2, "Some useful information goes here...");
感谢Stack Overflow thread(也在那里找到解释)。