2012-10-23 1 views
0

간단하기 때문에 숫자 1을 2로, 3을 32로 바꿔야합니다. 나는 간단한 PHP 루프와 모든 것을 만드는 방법을 알고 있지만이 "깨끗한"상태로 남겨두고 나에게 도움을 줄 것입니다.PHP 루프를 만들 필요가 있습니다 (많은 실패 후에 어떻게 처리해야할지 모르겠 음)

나를 도와 줄 수있는 도움을 주셔서 감사합니다.

<?php 
    $con = mysql_connect("localhost","user","pass"); 
    if (!$con) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 

    mysql_select_db("mbbcom1_rfhl", $con); 

    $sql="UPDATE `mbbcom1_rfhl`.`_statbu` 
    SET gp= gp + '$_POST[gp1]', g= g + '$_POST[g1]', a= a + '$_POST[a1]', shot= shot + '$_POST[s1]', pm= pm + '$_POST[pm1]', ppg= ppg + '$_POST[ppg1]', shg= shg + '$_POST[shg1]', bs= bs + '$_POST[blk1]', gwg= gwg + '$_POST[gwg1]', sog= sog + '$_POST[sog1]', soa= soa + '$_POST[soa1]', pim= pim + '$_POST[pim1]' WHERE `season` =9 AND `_statbu`.`player_id` = 1"; 
    if (!mysql_query($sql,$con)) 
    { 
    die('Error: ' . mysql_error()); 
    } 
    mysql_close($con) 
    ?> 

그러니 그냥 명확하게하기 위해, 내가 같은 일을 다음 루프를 필요로하지만, '$ _POST [GP2]', g = g + '$ _POST [G2]'.... 요법

감사합니다.

답변

2

와우, SQL INJECTION을 찾아야합니다. 이 코드는 안전하지 않습니다. 게시 된 모든 데이터 (아래 예제)에 대해 최소한의 mysql_real_escape_string()이 필요합니다.

루프하는 방법을 참조하십시오. 당신은 하나 개의 쿼리가 다른 (31)을 깰 실패 또는 그러나 많은 것은 남아있는 원하는 경우에만 wnat 죽을

//do your connection and db select here 
for($i=1; $i <= 32; $i++) { 
    $sql = "gp='".mysql_real_escape_string($_POST["gp{$i}"])."'... 
    //mysql_query() here 
} 
//mysql_close() here 

()는 mysql_query에이 모두가 같은 테이블을 업데이트하는 경우. 그렇지 않으면 더 우아하게 실패하고 무시할 수 있지만 메시지를 남겨주세요.

PDO를 사용하려면 좀 더 간단하게 살펴보아야 할 수도 있습니다.

+0

는 그 다음에 안 : $의 SQL = "GP = GP + '"($이 _ POST [ "GP {$ I}"]) ".mysql_real_escape_string.'... – MikeBeaudin87

+1

죄송합니다, 제가하려고했다 $ _POST에 $ i를 넣는 방법과 그것을 빠져 나가는 방법을 보여줍니다. 컴파일을 시도하지 않았습니다. 모두 숫자라면, intval ($ _ POST [ "gp {$ i}"]) mysql_real_escape_string 대신 숫자가되도록 강요하고 숫자가 아닌 경우 0이됩니다. –

+0

당신의 천재 !!! 감사합니다! – MikeBeaudin87

관련 문제