2014-01-12 3 views
0

내 행의 데이터를 업데이트하려고합니다. 그러나 모든 메시지가 제대로 표시되지만 행이 전혀 변경되지 않습니다. 증가하는 것에 문제가 있다고 생각합니다. 행의 데이터가 문자열이라는 것을 의미합니다. 따라서 ++가 작동하지 않을 수 있습니다. 나는 에코를 사용하여 어떤 데이터가 어떤 데이터 스크립트가 작동 하는지를보기 위해 $ ip, $ lower 등의 데이터가 있는지 확인하고 모든 것이 잘되지만 UPDATE는 그렇지 않다. 이 줄은 그대로 $country_lower라는 배열 키가 아닌 변수 $country_lower에 포함 된 키를 찾고SQL 행을 업데이트 할 수 없습니다.

$ip = $_SERVER['REMOTE_ADDR']; 
echo $ip_for_map; 
$ip_data_for_map = @json_decode(file_get_contents("http://www.geoplugin.net/json.gp?ip=".$ip)); 
$country_upper = $ip_data_for_map->geoplugin_countryCode; 
echo $country_upper; 
$country_lower = strtolower($country_upper); 
echo $country_lower; 
$main_for_table = 1; 
$take_from_sql_country = "SELECT $country_lower FROM table WHERE main='$main_for_table'"; 
$country_taken_from_table = mysqli_query($dbc, $take_from_sql_country); 
$row_sl_map = mysqli_fetch_assoc($country_taken_from_table); 
$row_country_data = $row_sl_map['$country_lower']; 
$row_final = $row_country_data++; 
$update_countrys_row = "UPDATE table SET $country_lower='$row_final' WHERE main='$main_for_table'"; 
$update_country_final = mysqli_query($dbc, $update_countrys_row); 
if(!$update_country_final) 
{ 
    echo 'BADSHIT'; 
} 
else 
{ 
    echo 'BRAVO'; 
} 
+0

$ country_lower에서 얻을 수있는 가치는 무엇입니까? –

+0

'mysql_'을 mysqli_로 변경하면 모든 SQL 주입이 고쳐지지 않으며, 코드는 SQL 주입에 대해 매우 vunerable ** 상태로 유지됩니다. 'geoplugin.net '이 출력을 변경하면 전체 데이터베이스를 파괴 할 수 있습니다. 준비된 문과 변수를 사용하십시오. – h2ooooooo

+0

@ user3184915 "게으른"방법은 쿼리에 삽입하기 전에 ANY 변수에 mysqli_real_escape_string을 사용하는 것입니다. – h2ooooooo

답변

1
$row_country_data = $row_sl_map['$country_lower']; 

: 이것은 내 코드입니다.

작은 따옴표를 제거하십시오.

쿼리가 업데이트되지 않아도 (잘못된 코드의 경우와 마찬가지로) 쿼리 자체는 계속 성공한다는 점에 유의해야합니다.

+0

오케이 당신이 말한대로했는데이 행에는 여전히 "0"이 있습니다. 그것은 증가하지 않습니다 – user3184915

+0

'++'대신에'+ 1'을 시도하십시오. –

관련 문제