2013-06-18 3 views
0

두 개의 배열 (질문 및 주석)을 결합한이 루프가 있으므로 주석 필드에 따옴표와 아포스트로피를 사용할 수 있도록 이스케이프 처리를하고 싶습니다. 어떤 이유로 mysqli_real_escape_string를 들어 배열을 이스케이프 처리하면 값이 누락됩니다.

$result = array(); 

    foreach ($questions as $key => $value){ 

     $value = mysqli_real_escape_string($value); 

     if (array_key_exists($key, $comments)){ 

      $comments = mysqli_real_escape_string($comments); 

      $result[$key] = "$value~ {$comments[$key]}"; 

     }else{ 

      @$result[$key] = "$value~ "; 

      } 

    } 

은 (단지 구분 기호 (~)를 떠나) 값을 노크한다.

나는 루프 외부 array_keys로/array_walk을 array_map 시도했지만 같은 결과가 있습니다

$comments = array_map("mysqli_real_escape_string", array_keys($comments)); 

mysql_real_escape_string() for entire $_REQUEST array, or need to loop through it?

i want to check array's data with mysql_real_escape_string() function

가 어떻게 mysqli_real_ecape_string와 전체 배열을 탈출 할을? 도움이 될 것입니다.

답변

0

이름에서 알 수 있듯이 mysqli_real_escape_string()은 문자열에서 작동합니다. 한 번에 전체 배열을 전달할 수 없습니다. 배열을 반복하고 각 요소를 개별적으로 이스케이프 처리해야합니다.

+0

덕분에, 내가 (루핑 및 매핑/도보) 두 가지 접근 방식을 시도하는 동료를 이해 - 난 당신이 적용 할 필요가 말을하지 않고가는 생각 함수를 각 개별 변수에 적용합니다. – Edward

+0

확인. 게시 한 코드가 실제로 배열 값을 순환하지 않았기 때문에 나는 혼란 스러웠습니다. 첫 번째 블록은 mysqli_real_escape_string()에 배열을 전달하는 것처럼 보이고 두 번째 블록은 값이 아닌 배열 키를 매핑합니다. –

0

함께이 문제를 해결 루프 동안 간단한 : 회신에 대한

$i = 0; 
    while($i < 30){ 
    $result[$i] = mysqli_real_escape_string($link, $result[$i]); 
    $i++; 
    } 
관련 문제