2010-08-19 62 views
0

我有下面的代码,应该在运行时更新她的皇家陛下Penelope的女王陛下(它为某人工作,诚实)的一个“受害者”表,然而每次代码被执行后,它会重新添加所有新行。我很确定我已经保护了这一点,但我想不是。我在这里做错了什么?确保使用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) 
        "); 
    } 

} 

回答

5

您需要在第一个查询的WHERE子句更改为以下:

WHERE victim = $vic 

另外,请考虑使用绑定变量,因为这会保护你的代码的SQL注入攻击。

+1

+1 PDO :: PreparedStatment – 2010-08-20 00:18:22

1

您可以使用“INSERT ... ON DUPLICATE KEY”查询来替代,这将保证现有行不会被复制,而只会被更新。假设vic是表的主键,你会这样做:

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