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