6

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テーブルにDBを置いているので、logo_idとuser_idは一意である必要があります。したがって、行が存在する場合、最初のクエリは失敗し、2番目の更新が実行されます...しかし、これは一種のハックのように感じます...これを行うためのより良い方法はありますか?

4

2 に答える 2

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);
于 2013-03-08T05:45:05.057 に答える
1

私の場合:

INSERT INTO assignment_status (user, assignment, status, note) VALUES (4, 7, 2, "My special note.")
ON DUPLICATE KEY UPDATE status=2, note="My special note."

私の主キーは2つの列userassignmentIDで構成されていることに注意してください。

于 2017-08-14T19:04:34.017 に答える