워드프레스:$wpdb->get_results를 사용할 때 결과를 이스케이프 해제하려면 어떻게 해야 합니까?
사용하는 데이터베이스에 새 행을 추가하려면$wpdb->insert사용하는 행을 가져오려면 ,$wpdb->get_results.
문제는 말이다$wpdb->insert입력에서 빠져나간 것 같습니다.예를들면,a"b로 저장된다.a\"b를 참조해 주세요.그렇지만,$wpdb->get_results도망치지 않을 것 같다a\"b로.a"b.
이것이 설계상 올바른 동작입니까?
의 결과를 회피할 수 없을까?$wpdb->get_results수동으로요? (이것에 적절한 기능은 무엇입니까?)
$wpdb->insert()그리고.$wpdb->prepare()는 SQL 주입 공격을 방지하기 위해 데이터를 이스케이프합니다.그$wpdb->get_results()SQL에서 일반적으로 동작하도록 설계되어 있습니다.SELECT진술이 있기 때문에 슬래시가 그대로 남아 있는 것은 의도적인 것이라고 생각합니다.이것에 의해, 데이터의 소비자는 필요에 따라서 데이터를 처리할 수 있습니다.
그 이후로는$wpdb->get_results()funciton은 의 배열을 반환합니다.stdClass오브젝트, 모든 행의 모든 컬럼에 있는 슬래시를 제거하려면 행과 PHP를 실행하는 각 행 오브젝트의 속성을 반복해야 합니다.stripslashes()기능을 합니다.
foreach( $quotes as &$quote ) {
foreach( $quote as &$field ) {
if ( is_string( $field ) )
$field = stripslashes( $field );
}
}
wpdb->get_filename() 함수에 대한 자세한 내용은http://http://codex.wordpress.org/Class_Reference/wpdb#SELECT_Generic_Results 를 참조해 주세요.
http://codex.wordpress.org/Function_Reference/stripslashes_deep
//replace $_POST with $POST
$POST = array_map( 'stripslashes_deep', $_POST);
$wpdb->insert(
'wp_mytable',
array(
'field_name' => $POST['field_name'],
'type' => $POST['type'],
'values' => serialize($POST['values']),
'unanswered_link' => $POST['unanswered_link'],
),
array(
'%s','%s','%s','%s'
)
);
언급URL : https://stackoverflow.com/questions/12026609/wordpress-how-to-unescape-the-results-when-using-wpdb-get-results
'sourcecode' 카테고리의 다른 글
| Spring MVC REST 컨트롤러에서 HTTP 헤더 정보에 액세스하려면 어떻게 해야 합니까? (0) | 2023.02.15 |
|---|---|
| C#을 사용하여 csv 파일을 json으로 변환 (0) | 2023.02.15 |
| 선택한 ng-option이 변경될 때 값 가져오기 (0) | 2023.02.15 |
| AngularJS - 소스 맵을 무시하는 스택트레이스 (0) | 2023.02.15 |
| react-testing-library는 왜 ToBeInThe Document() (0) | 2023.02.15 |