2013-01-20 59 views
0

我做了一個小系統,它應該更新某些東西。它包含一個表單。PHP UPDATE不插入數據庫清理行

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並將其設置在數據庫中的表單?

+0

你需要看看代碼注入,因爲黑客這樣可以接管你的網站/數據庫。我看了一下你之前指出的你的個人資料和肖像。此外,我注意到你幾乎從不接受答案,你可以看看嗎? –

回答

1

好的,這是UPDATEINSERT之間的差異。

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脆弱。請看下面的文章,瞭解如何防止它。通過使用PreparedStatements,你可以擺脫圍繞值使用單引號。