これは、何を達成しようとしているのかを教えてくれる答えです。今いる場所からここまでのコードを書くつもりはありません。しかし、それはあなたが良い考えを得るのに役立つはずだと私は信じています.
likes
まず、次の構造のテーブルがあるとします。
user_id INT(11) NOT NULL
video_id INT(11) NOT NULL
PRIMARY KEY(user_id, video_id)
次に、コードで次のことができます (関数の使用を容認しないため、この例では PDO を使用していmysql_*
ます)。
$statement = $pdo->prepare('INSERT INTO likes (user_id, video_id) VALUES (:user_id, :video_id)');
$statement->bindValue(':user_id', $userId);
$statement->bindValue(':video_id', $videoId);
try {
// The idea is that, if the user/video combination already exists - the above
// query will throw an exception so you won't execute the code below this line
$statement->execute();
$likes = $pdo->prepare('UPDATE video SET likes = likes + 1 WHERE video_id = :video_id');
$likes->bindValue(':video_id', $videoId);
$likes->execute();
} catch (PDOException $exception) {
// if it was a duplicate key exception, then the likes on the video
// have not been updated and you can print a friendly error message to your
// users here
}