querida All.uso de intval & real_escape_string al desinfectar enteros
Estoy usando números enteros PK en algunas tablas de la base de datos mysql. Antes de la entrada del script PHP, estoy haciendo algo de desinfección, que incluye intval ($ id) y $ mysqli-> real_escape_string().
Las consultas son bastante simples
insert into `tblproducts`(`supplier_id`,`description`) values('$supplier_id','$description')
En este ejemplo, la descripción pasa por $ real_escape_string(), mientras que $ supplier_id de ser sólo intval ed() '.
Tengo curiosidad, si hay algunas situaciones, cuando necesito aplicar tanto intval como real_escape_string al entero que estoy insertando en DB? Entonces, básicamente, ¿realmente necesito usar?
$supplier_id = intval($mysqli->real_escape_string($supplier_id));
Gracias.
Todo ese esfuerzo extraño con desinfectar y garantizar los tipos de datos sería redundante si utilizara declaraciones preparadas. Mucho más fácil. – mario
Gracias por su comentario. Originalmente, las clases de DB se desarrollaron sin declaraciones de preparación, por lo tanto, necesito refactorizar las clases subyacentes y no romper la infraestructura de trabajo al mismo tiempo. Así que estoy considerando cambiar a las declaraciones de preparación por las razones que mencionaste, pero no inmediatamente :) – paulus
Además, las declaraciones de preparación, hasta donde yo sé, son más útiles cuando se trata de consultas masivas, que generalmente no es el caso en mi situación. Así que, básicamente, cambiar a las declaraciones preparatorias aumentará (definitivamente no disminuirá) la cantidad de código =>, por lo tanto, la legibilidad y el rendimiento reducidos también están bajo cuestionamiento. En mi opinión, será más rápido hacer intvals y real_escape_strings ocasionales que preparar statement => bind => execute.A menos que desarrolle algún tipo de super-meta-db-class que se encargue de todas las consultas, lo que en mi caso significaría volver a escribir el código desde cero. – paulus