usar query get_var get_results example delete custom como codex wordpress escaping wpdb

query - Wordpress: ¿Cómo deshacer los resultados cuando se usa $ wpdb-> get_results?



wpdb query select (2)

$wpdb->insert() y $wpdb->prepare() escapó datos para evitar ataques de inyección de SQL . La función $wpdb->get_results() está diseñada para funcionar genéricamente con SELECT SQL SELECT , por lo que creo que el hecho de que las barras se dejen en su lugar es intencional. Esto permite que el consumidor de los datos lo procese según sea necesario.

Como el $wpdb->get_results() devuelve una matriz de objetos stdClass , para eliminar las barras en todas las columnas de cada fila, debe recorrer las filas y las propiedades de cada objeto de fila ejecutando las stripslashes() PHP stripslashes() funcionar en él.

foreach( $quotes as &$quote ) { foreach( $quote as &$field ) { if ( is_string( $field ) ) $field = stripslashes( $field ); } }

Más información sobre la función wpdb-> get_results (): http://codex.wordpress.org/Class_Reference/wpdb#SELECT_Generic_Results

Para agregar nuevas filas a la base de datos, uso $wpdb->insert , y para obtener las filas utilizo $wpdb->get_results .

El problema es que $wpdb->insert parece estar escapando de la entrada. Por ejemplo, a"b se guarda como a/"b en la base de datos. Pero, $wpdb->get_results no parece unescape atrás a/"b a a"b .

¿Es este el comportamiento correcto por diseño?

¿Debo desbloquear el resultado de $wpdb->get_results manualmente? (¿Cuál es la función adecuada para esto?)


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'' ) );