2012-07-11 1 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

처음에는 DB에 전달한 모든 사용자 입력에 대해 mysql_real_escape_string ($ _ GET [ 'foo'])'을 사용하십시오. 두 번째로 PHP'PDO' (http://php.net/pdo 참조)를 사용하여 DB에 접근하는 "현대적인"방법을 사용해야합니다. – fdomig

+0

우선 사용중인 데이터베이스 기능은 더 이상 사용되지 않습니다. mysql이 아닌 mysqli_query와 mysqli_close를 사용해야한다. – DrinkJavaCodeJava

+0

SQL 주입 공격을 차단하려면? – Ron

답변

2

몇 가지 실수 : 당신은 당신의 입력을 살균하지 않을

  • , 당신은 당신의 mysql_query의 출력을 확인하지 않는 약 SQL Injections
  • 읽어 보시기 바랍니다. SET Level 'Level+1'와 쿼리가 mysql_ 기능보다 더 좋은 방법 인터페이스, 당신은 =을 잊고 새로운 프로젝트에 대한 PDO 사용을 고려하시기 바랍니다 따옴표
  • $action == 'rankup'하지 =
  • 을 제거, 유효하지 않습니다.
1

당신은 mysqli로 대체해야 MySQL의 시작이

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

또한 데이터베이스 기능처럼 SQL 쿼리를 입력합니다. 이는 PHP가 다음 버전에서 mysql로 ​​시작하는 함수를 단계적으로 제거하기 때문입니다.

관련 문제