2012-11-30 85 views
-2
<?php 

if (isset($_GET['firstname'])){ 
    $fname = $_GET['firstname']; 
} 

mysql_query("UPDATE student SET firstname = $fname WHERE studentID = $id"); 

?> 

我有一個將更新我的數據庫的窗體。在表單底部有一個更新按鈕。當我使用此代碼時,它不起作用。使用PHP更新數據庫

我可以把在那裏說:$ FNAME在我的mysql_query一個「湯姆,它會更新。

我還可以呼應了$ FNAME變量,它會響應一下什麼是形式正確。 。

但我不能得到數據庫採取$ FNAME

任何建議將是巨大的,感謝

+1

您是否在更新數據庫之前在頁面上的任意位置設置$ id? – sbeliv01

+0

不要使用'mysql_ *',因爲它已被棄用。使用準備好的查詢將數據從查詢中分離出來。就像現在這樣,如果你還沒有,你就會**開放**到SQL注入和**將被黑客攻擊**。考慮使用PDO或類似方法準備的查詢。最後,請勿使用GET動詞做更新。任何爬蟲都會觸發這個並更新你的數據庫。至少使用POST。 – Brad

+0

相關:http://thedailywtf.com/Articles/The_Spider_of_Doom.aspx –

回答

1

你缺少單引號括起來$fname$id(如果它是一個字符串),

mysql_query("UPDATE student SET firstname = '$fname' WHERE studentID = '$id'"); 

注: Mysql_ *擴展已被棄用,並且是開放的SQL注入。所以,避免使用它們。改用PDO或Mysqli_ *。

+0

我之前在那裏有'$ fname',當我發佈時忘了將它放回去,但即使我這樣做,它也不起作用。 –

+0

另外,圍繞'$ id',如果它是一個字符串。 –

2

你忘了周圍的名稱引號:

mysql_query("UPDATE student SET firstname = '$fname' WHERE studentID = $id"); 

順便說一下,你的代碼是SQL注入的動力。請解決這個問題。見best-way-to-prevent-sql-injection-in-php

+0

我之前在那裏有'$ fname',忘了在發佈時忘了放回去,但是即使我這樣做也行不通。我將不得不考慮注入,我用PHP和MYSQL進行了4個月的編碼。 –

+0

@ user1770189:SQL注入預防是ANY語言中第0天的事情。這不是你稍後離開的東西。 –

+0

嘗試使用PDO或MSQLI。那麼問題也可能解決。 –