使用PHP / MySQL确保独特的行

时间:2010-08-19 23:57:06

标签: php mysql

我有以下代码,在运行时,应该更新一个“女王陛下佩内洛普”的“受害者”表(这是为某人的工作,诚实),但每次执行代码时都会添加所有新的一遍又一遍。我很确定我已经保护了这一点,但我猜不是。我在这里做错了什么?

require_once 'victims.php';

 foreach( $victims as $vic )
 {
     $vic = mysql_real_escape_string($vic);

     if(!(mysql_query("
                      SELECT * FROM victims
                      WHERE ".$vic
                     )))
     {
         mysql_query("
                     INSERT INTO victims
                     (victim, amount) 
                     VALUES( '".$vic."', 0)
                    ");
     }

 }

2 个答案:

答案 0 :(得分:5)

您需要将第一个查询的where子句更改为以下内容:

WHERE victim = $vic

另外,请考虑使用绑定变量,因为这样可以保护您的代码免受SQL注入攻击。

答案 1 :(得分:1)

您可以使用“INSERT ... ON DUPLICATE KEY”查询,这样可以保证现有行不会重复,只会更新。假设vic是表的主键,您可以执行以下操作:

INSERT INTO victims (victim, amount)
VALUES ($vic, $amount)
ON DUPLICATE KEY UPDATE amount=VALUES(amount)