0

您好,我有一个简单的 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());  


} 

我该怎么做呢?因为目前它只是继续插入但需要它,所以如果用户有奖励,那么不要为该用户进行插入。奖励存储在 $reward 中。

4

2 回答 2

4

您正在寻找的是UNIQUE KEY结合INSERT ... ON DUPLICATE KEY UPDATE

mysql_*另外,请停止使用古老的功能编写新代码。它们不再被维护并且社区已经开始了弃用过程。相反,您应该了解准备好的语句并使用PDOMySQLi。如果你不能决定,这篇文章将有助于选择。如果你想学习,这里有一个相当不错的 PDO 相关教程

于 2012-05-19T12:51:31.890 回答
0
while($row = mysql_fetch_array( $result )) {
    if(mysql_num_rows(mysql_query("select * from User_Resards where username='".$row['username']."' ")) == 0) {
        mysql_query("INSERT INTO User_Rewards (username, reward_name, reward_image) VALUES('".$row['username']."', '".$reward."', '".$rewardimage."' ) ") or die(mysql_error());    
    }
}

你可以试试这个。

于 2012-05-25T11:02:49.513 回答