0

我做了一个小系统,它应该更新某些东西。它包括一个表格。

if(isset($_GET['bevestiging'])) {
$kamerurl= $_POST['kamer'];
mysql_query("UPDATE volg_dj_aan_uit SET (aan_of_uit,kamerurl) VALUES ('aanzetten','$kamerurl')");
echo '<b>Geupdate!!</b>
<br>
Het volgen is aangezet!
<br>
<a href="index.php?p=tools_volg_kamer" target="_self">Verder »</a>';
}

它检查是否设置了“bevestiging”(这是)然后从 $_POST['kamer'] 发布的 URL 应该转移到 $kamerurl 但它是一个空的结果。它还将“aanzetten”设置为 0 而不是“aanzetten”,这是 PHP 中的形式:

else {
$sql = mysql_query("SELECT * FROM volg_dj_aan_uit");
$row = mysql_fetch_array($sql);
if($row['aan_of_uit'] == "uitzetten") {
$aanofuit = "aanzetten";
} else if($row['aan_of_uit'] == "aanzetten") {
$aanofuit = "uitzetten";
}
echo 'Vul de kamerurl in: <form method="post" action="index.php?p=tools_volg_kamer&bevestiging=JA"><input type="text" id="kamer" name="kamer"><br>
Weet je zeker dat je gevolgt wilt worden?
<br>
<input type="submit"id="Submit"name="Submit" value="Ja">
</form>';
echo '
<a href="index.php?p=tools_volg_kamer" target="_self">Nee</a> | <a href="index.php?p=tools_volg_kamer_'. $aanofuit .'" target="_self">Volgen '. $aanofuit .'</a>';
}

这给了我数据库中的空结果。那么我该如何以正确的方式解决这个问题,它会生成一个将“kamerurl”发送到 tools_volg_kamer&bevestiging=ja 并将其设置在数据库中的表单?

4

1 回答 1

1

UPDATE好的,这就是和之间的区别INSERT

UPDATE仅在INSERT我认为您想要的)在表格上添加新行时编辑该行。

INSERT INTO volg_dj_aan_uit (aan_of_uit,kamerurl) 
VALUES ('aanzetten','$kamerurl')

UPDATE语法_

UPDATE volg_dj_aan_uit 
SET    aan_of_uit = 'aanzetten',
       kamerurl   = '$kamerurl';

作为旁注,SQL Injection如果值(s)来自外部,则查询很容易受到攻击。请看下面的文章,了解如何预防。通过使用 PreparedStatements,您可以摆脱在值周围使用单引号。

于 2013-01-20T14:06:40.783 回答