2011-09-06 84 views
0

我試圖從URL中獲取一個變量,但由於某種原因,我無法讓它工作。這一切都來自另一個網站的形式,這就是爲什麼我需要從URL中獲取它。這就是我現在所擁有的:PHP中的URL變量MySQL查詢

if (isset($_GET['PTS'])) { 
    $sPTS = htmlentities($_GET['PTS']); 

if(isset($_GET['submit'])) 
    { mysql_query("UPDATE table1 SET $sPTS=1, ENTRY=5") or die (mysql_error()); }} 

感謝您的幫助......我還是新來此學習。

+0

所以列名在查詢字符串中的'PTS'值?即'foo.php?CustomerID = abcd' ...並且您希望將您的SQL字符串構建爲擁有'CustomerID = 1'? –

+0

'$ sPTS'應該是字段/列而不是查詢中的值?你是否從'htmlentities($ _ GET ['PTS']);'?處理URL時,使用'urldecode'。 – Josh

+0

您是否收到錯誤消息?哪裏和什麼? – Kevin

回答

0

嘗試

if(isset($_GET['submit'])) 
{ mysql_query("UPDATE table1 SET `".$sPTS."`=1, `ENTRY`=5") or die (mysql_error()); }} 

你也應該使用那些$ _GET值

$sPTS = mysql_real_escape_string(htmlentities($_GET['PTS'])); 
+0

它可能與GET值沒有任何關係,但是它與所有數據庫都沒有被黑客攻擊有關。 – 2011-09-06 22:41:12

+0

@jordan這個答案是**不**安全的SQL注入,即使使用mysql_real_escape_string。 -1 –

+0

@Pekka不是爲了確切的目的而設計的,爲了使輸入值安全地用於數據庫? – 2011-09-07 16:07:29

3

大約有,我想指出的代碼的一些擔憂mysql_real_escape字符串,它們可能會或可能不會解決這個問題。

  • 您最終會使用htmlentities()將是一個字段名稱。也許一小部分數據檢查會更好。
  • 您允許GET語句指定沒有限制的字段名稱。這非常危險
  • UPDATE語句中沒有where子句。表中的所有記錄都將被更新。
  • 如果通過POST提交,它不會在這裏打。我只是在很可能忽略這一點的時候向你提及這一點。 $_REQUEST更適合您的使用(比$_GET)?
+0

你的回答比我的好:) – thelastshadow