您好,我有一个简单的SQL SELECT和INSERT,该站点向我提供了帮助,但是现在我需要使它起作用,以便仅对不存在的行进行插入。

因此,如果该行在那里,则跳到下一个。我有这样一种说法,当用户进行100场战斗时,它会为其提供奖励,但是,如果继续执行插入操作,那么他们进行相同的100场战斗时将获得100倍的奖励。因此,需要一些如何检查用户是否已获得奖励的方法,如果不给他们奖励呢?



// Get all the data from the "example" table
$result = mysql_query("SELECT * FROM users where wins >= 100")
or die(mysql_error());


$reward = '100 battles won' ;
$rewardimage = 'chnage after' ;
echo "<table border='1'>";
echo "<tr> <th>username</th> <th>wins</th> </tr>";
// keeps getting the next row until there are no more to get
while($row = mysql_fetch_array( $result )) {
    // Print out the contents of each row into a table



mysql_query("INSERT INTO User_Rewards
(username, reward_name, reward_image) VALUES('".$row['username']."', '".$reward."', '".$rewardimage."' ) ")
or die(mysql_error());


}


我将如何去做?因为目前它只是继续执行插入操作,但是需要它,因此如果用户有奖励,则不要为该用户执行插入操作。奖励存储在$奖励中。

最佳答案

您要查找的是UNIQUE KEYINSERT ... ON DUPLICATE KEY UPDATE组合。

另外,请停止使用古老的mysql_*函数编写新代码。它们不再得到维护,社区已开始deprecation process。相反,您应该了解prepared statements,并使用PDOMySQLi。如果您不确定,this article将有助于选择。如果您想学习,请here is a quite good PDO-related tutorial

08-03 23:58