2012-07-11 116 views
1

我正在研究一個小項目:一個小數量的計算遊戲。接受php的多個輸入來更新mysql數據庫

我想要一個php文件,可以接受輸入並將它們解釋爲指定的數據庫更新。

這是我到目前爲止。它似乎並沒有爲我工作。

$name = $_GET['n']; 
$action = $_GET['a']; 
$result = mysql_query("SELECT * FROM players WHERE Username ='".$name."'"); 

while($row = mysql_fetch_array($result)) { 
    if ($action = "rankup") mysql_query("UPDATE players SET Level 'Level+1' WHERE Username='".$name."'"); 
} 

mysql_close($con); 

我沒有收到任何錯誤,但它不工作,並且所有的數據庫連接都沒問題。

我不知道問題出在哪裏。

+1

首先請使用'mysql_real_escape_string($ _ GET ['foo'])'作爲您傳遞給數據庫的每個用戶輸入。其次,您應該使用更「現代」的方式訪問DB「PHP」PDO(參見http://php.net/pdo)。 – fdomig 2012-07-11 21:57:08

+0

首先,您使用的數據庫功能已過時。你應該使用mysqli_query和mysqli_close而不是mysql。 – DrinkJavaCodeJava 2012-07-11 21:57:30

+0

要阻止sql注入攻擊嗎? – Ron 2012-07-11 21:57:33

回答

2

幾次失誤這裏:

  • 你不消毒的投入,請閱讀SQL Injections
  • 你不檢查你的mysql_query的輸出。與SET Level 'Level+1'查詢是無效的,你忘了=和刪除報價
  • $action == 'rankup',不=
  • 請考慮使用PDO新項目,它比mysql_功能的方式更好的界面。
1

你想輸入的SQL查詢一樣,MySQL的開始應與mysqli的更換這個

'UPDATE players SET Level= (Level+1) WHERE Username='.$name.' 

而且任何數據庫功能。這是因爲PHP將在下一版本中逐步淘汰以mysql開頭的函數。