Escapar valor que no es enviado a la base de datos

Xkeeper Seguir

Gamma
Verificación en dos pasos activada
Verificado por Whatsapp
Desde
17 Dic 2012
Mensajes
419
Disculpen el título, no sabía cómo describir bien esta duda...

Tengo algo así:

PHP:
$value1 = mysql_real_escape_string($_POST['input1']);
$value2 = mysql_real_escape_string($_POST['input2']);
$value3 = mysql_real_escape_string($_POST['input3']);
$value4 = mysql_real_escape_string($_POST['input4']);

mysql_query("INSERT INTO `tabla` (`value1`,`value2`,`value3`) VALUES ('$value1','$value2','$value3')");

Como verán, $value4 no es enviado a la base de datos, lo estoy usando para algo más, pero no guarda nada en la bd. ¿Es posible que me exponga a inyecciones sql si no uso mysql_real_escape_string en ese valor? Sustenten por favor.

Gracias.
 

shadowhck

Lambda
Programador
Verificado por Whatsapp
Desde
18 Ago 2009
Mensajes
2.772
Depende de como uses el valor, por ejemplo, si es solo para comparacion de datos, no tendras ningun problema.
 

Poka

VIP
Iota
Social Media
Verificación en dos pasos activada
¡Ha verificado su Paypal!
Verificado por Binance
Suscripción a IA
Desde
24 Sep 2012
Mensajes
2.434
Si no tiene relacion con la base de datos no tendriasbque tenrn problemas
 

victorvu

Beta
Programador
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
24 Feb 2013
Mensajes
118
El problema puede venir si alguno de esos campos puede ser NULL
 

UnderD

Beta
Programador
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
5 Sep 2013
Mensajes
36
Siempre es necesario hacer el "escape" a las cadenas que entran por formulario, recuerda que uno nunca sabe con qué tipo de usuario contará. :)
 

fercba

Épsilon
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Desde
5 Ago 2013
Mensajes
815
Hola podrias imprimir los valores para ver si se estan enviando bien todos los valores, y antes de hacer la consulta hacer un exit .

Por otro lado te recomiendo usar PDO y te olvidas de estar escapando valor x valor.
Si te interesa te dejo el enlace para que le des una leia
Sentencias preparadas Pdo.
 

Xkeeper

Gamma
Verificación en dos pasos activada
Verificado por Whatsapp
Desde
17 Dic 2012
Mensajes
419
Gracias a todos por responder.

El problema puede venir si alguno de esos campos puede ser NULL
¿Qué pasaría si alguno es null?

Siempre es necesario hacer el "escape" a las cadenas que entran por formulario, recuerda que uno nunca sabe con qué tipo de usuario contará. :)
Sucede que uso ese valor con imagettftext, y mysql_real_escape_string modifica el texto :s

Hola podrias imprimir los valores para ver si se estan enviando bien todos los valores, y antes de hacer la consulta hacer un exit .

Por otro lado te recomiendo usar PDO y te olvidas de estar escapando valor x valor.
Si te interesa te dejo el enlace para que le des una leia
Sentencias preparadas Pdo.
Es un tema nuevo para mí, le daré una leída, gracias.
 

victorvu

Beta
Programador
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
24 Feb 2013
Mensajes
118
¿Qué pasaría si alguno es null?

Si tu base de datos acepta NULL no podes hacerlo con el insert que nos mostraste xq seria asi

$value1 = "algo 1";
$value2 = "algo 2";
$value3 = "NULL";

mysql_query("INSERT INTO `tabla` (`value1`,`value2`,`value3`) VALUES ('$value1','$value2','$value3')");

la consulta quedaria

mysql_query("INSERT INTO `tabla` (`value1`,`value2`,`value3`) VALUES ('algo 1','algo 2','NULL')");

Estas mandando un string "NULL" no NULL
 

Xkeeper

Gamma
Verificación en dos pasos activada
Verificado por Whatsapp
Desde
17 Dic 2012
Mensajes
419
Si tu base de datos acepta NULL no podes hacerlo con el insert que nos mostraste xq seria asi

$value1 = "algo 1";
$value2 = "algo 2";
$value3 = "NULL";

mysql_query("INSERT INTO `tabla` (`value1`,`value2`,`value3`) VALUES ('$value1','$value2','$value3')");

la consulta quedaria

mysql_query("INSERT INTO `tabla` (`value1`,`value2`,`value3`) VALUES ('algo 1','algo 2','NULL')");

Estas mandando un string "NULL" no NULL
ah gracias, para que no queden campos vacíos uso "empty", por ejemplo:

Insertar CODE, HTML o PHP:
if(!empty($_POST['value1'])) $value1 = $_POST['value1'];
else $value1= 'no hay value1';

¿Con eso estaría evitando los 'null'?
 
Arriba