mysql_real_escape_string no funciona con post PHP

Tal vez me equivoque, pero para mí no funciona,

estoy tratando de hacer el mysql_real_escape_string() funcionar con $_POST['value']; como esto,

mysql_real_escape_string($_POST['value']);

pero no funciona, pero si pruebo esto,

$value = $_POST['value'];
mysql_real_escape_string($value);

funciona perfectamente, alguna sugerencia de porque?

EDIT:

Mi código es así,

$post = array('id', 'name');
$postArray = array();
foreach($post as $pa){
    $postArray[$pa] = mysql_real_escape_string($_POST[$pa]);
}

preguntado el 01 de julio de 12 a las 17:07

Eso... no debería ser cierto. ¿Tal vez ayudaría ofrecer un poco más de contexto y algunos ejemplos? -

Después de la edición, esa muestra de código me parece 100% correcta. ¿Cuáles son algunas entradas y la salida incorrecta que producen? -

Y, oh, espera, sí. @Amber tiene mucha razón. Parece... um... 80% correcto, entonces ^_^; -

1 Respuestas

¿Está asignando el resultado de mysql_real_escape_string() ¿a nada? No modifica la variable en el lugar.

$value = mysql_real_escape_string($_POST['value']);

Para responder a su edición, ¿no debería su foreach estar recorriendo $postno, $postArray?

foreach($postArray as $pa){

debiera ser...

foreach($post as $pa){

Segunda edición: use este código y díganos qué genera:

var_dump($_POST);
$post = array('id', 'name');
$postArray = array();
foreach($post as $pa){
    $postArray[$pa] = mysql_real_escape_string($_POST[$pa]);
}
var_dump($postArray);

Edición final:

De acuerdo, su problema es que sus variables de publicación entrantes se leen como matrices y, por lo tanto, no puede llamar mysql_real_escape_string() directamente en ellos (porque está diseñado para cadenas, no para matrices).

Cambie su código a esto:

$post = array('id', 'name');
$postArray = array();
foreach($post as $pa){
    if(is_array($_POST[$pa])) {
        $postArray[$pa] = mysql_real_escape_string($_POST[$pa][0]);
    } else {
        $postArray[$pa] = mysql_real_escape_string($_POST[$pa]);
    }
}

y las cosas deberían funcionar.

Respondido 01 Jul 12, 17:07

Después de su segunda edición, no veo ningún otro problema con su código. ¿Puede intentar poner un var_dump($postArray); después de su código para ver qué contiene y/o mostrarnos más código de contexto? - Amber

Por favor publique un var_dump() de tanto $_POST antes del bucle y $postArray después del ciclo, desde la misma ejecución del script. - Amber

No sé qué está mal, pero cuando lo cambié solo a $_POST está bien, una vez que cambié nuevamente a mysql_real, está todo en blanco. - itsme

Obtengo este, array(6) { ["company"]=> array(1) { [0]=> string(2) "AL" } ["type"]=> array(1) { [ 0]=> cadena(2) "CD" } ["código"]=> matriz(1) { [0]=> cadena(8) "CICPROMO" } ["título"]=> matriz(1) { [ 0]=> string(12) "Agente de viajes" } ["cantidad"]=> array(1) { [0]=> string(5) "false" } ["saveDiscount"]=> string(4) " Save" } array(5) { ["company"]=> NULL ["type"]=> NULL ["code"]=> NULL ["title"]=> NULL ["cantidad"]=> NULL } - itsme

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.