2010-01-18 6 views
1

안녕하세요, 문제가 있습니다.이 SQL 업데이트를 실행하고 싶지만 작동하지 않습니다. 누구든지 나를 도울 수 있을까? 감사!sql을 이렇게 업데이트하는 방법

코드 :

$temp = $_GET['ul']; 

foreach ($temp as $key=> $value) 
{ 
    $str=array(); 
    $arr=explode(',',$value); 
    $str =array($key=>$arr); 

    for($i=0;$i<count($str[$key]);$i++) 
    { 
     $tripID='2';      
     $sql = "UPDATE places_trips 
       SET orderNo='$i', ColumnNo='$key' 
       WHERE place_id=" . $str[$key][$i] . " 
       AND trip_id=" . $tripID; 
     mysql_query($sql); 
     } 
    } 
} 
나는 $ tripID = 2를 설정하려면

실제로, $ tripID = 2222. 그래서 $ tripID = 2를 항상 만드는 방법은?

+1

어. 뭐? –

+0

질문을 이해하면 trip_id = $ tripID가 set 절의 where, 부분 앞에 있어야합니다. 아니면 ==보다는 ==를 사용하는 것을 의미할까요? –

답변

3

쿼리가 trip_id를 변경하지 않습니다. 내가 제대로 이해하면, 당신은 당신의 쿼리의 첫 번째 부분에 넣어해야 trip_id는 2입니다 행 에 대한 orderNo 및 ColumnNo을 변경하려고 :

말했다되고 그건
"UPDATE places_trips SET orderNo = '$i', ColumnNo = '$key', trip_id = $tripID WHERE place_id = ".$str[$key][$i]; 

에 대한 SQL injections를 참조하십시오. 현재 코드가 굉장히 위험하기 때문에 필요합니다.

UPDATE places_trips SET 
    orderNo = $i, 
    ColumnNo = $key 
WHERE place_id = $str[$key][$i] 
AND trip_id RLIKE '^2+$'; 

이 trip_id 만 2들에 포함 된 모든 행을 업데이트해야합니다 :

+0

+1, SQL 인젝션에 대해 읽어보십시오. –

0

나는이 필요하시면 바랍니다.

SQL Injections에 대한 StackOverflow를 검색하면 코드가 취약 해집니다.

관련 문제