Re: [PHP-ES] do while + mysql

[email protected] (Lucas Crisman) Fri, 4 Apr 2014 12:29:15 -0300
Newsgroups php.general.es
Message-ID <CAJneyRqde-h-g=H8Bks0T3WfDGPLU3zHjozmKygNueWuQ5rBcQ@mail.gmail.com>
Andres: la capa de datos tambien puede ser creada sobre PHP y ser mucho mas
flexible ante ataques que los stored procedures sin la necesidad de ellos.
Tanto ataques SQL Injection como XSS siguen siendo posible realizar con
stored procedures. La verdad no coincido en el hecho de que "hacer una
consulta directa a la BD es mala idea", existen muchas formas de abstraer
codigo para encargarse de cada capa (vistas, controladores, modelos, etc),
pero nada asegura que utilizando stored procedures estés asegurándote te
ataques ni separando las capas de la aplicación de la mejor manera.

Saludos


El 3 de abril de 2014, 18:54, Alexis Saucedo <[email protected]>escribió:

> Muchisimas gracias a todos por su tiempo, voy a tenerlo en cuenta.
>
> Un saludo!
>
>
> El 31 de marzo de 2014, 16:49, @ndrés <[email protected]> escribió:
>
> > Su sitio queda muchísimo más expuesto a ataques como SQL injections y
> XSS.
> >
> > Ud le está dejando la corroboración de los datos a la capa de
> > presentación. Si el día de mañana quisiera migrar de PHP a otra
> tecnología
> > (ej Ruby) tiene que migrar todo el código de acceso a datos. Lo mismo
> pasa
> > si quisiera cambiar de BD, tiene que reescribir y probar la capa de
> > presentación.
> >
> > Seguridad, mantenibilidad y claridad. Por esas tres razones es mala idea.
> >
> >
> > 2014-03-28 16:48 GMT-06:00 El Ale... <[email protected]>:
> >
> > muchisimas gracias a todos por u tiempo me sirvio bastante! andres por
> que
> >> decis q no es una buena idea?.
> >>
> >> Saludos!
> >>
> >>
> >> El 27 de marzo de 2014, 3:06, @ndrés <[email protected]> escribió:
> >>
> >> > Hacer una consulta directa a una BD es muy mala idea. Store
> procedures.
> >> >
> >> >
> >> > 2014-03-26 19:09 GMT-06:00 Philipp Keweloh <[email protected]>:
> >> >
> >> > El 26 de marzo de 2014, 21:56, El Ale... <[email protected]>
> >> >> escribió:
> >> >>
> >> >> > Buenas tardes amigos, les traigo una consulta por que la verdad que
> >> hace
> >> >> > rato que vengo con esto "atandolo con alambre" pero ahora necesito
> >> una
> >> >> > solucion aunque no la encuentro, tengo una llamada a mysql por
> >> ejemplo
> >> >> "no
> >> >> > me reten si esta mal escrita" jaja:
> >> >> >
> >> >> > $query = mysql_query(SELECT * FROM db WHERE status='1');
> >> >> >               if($row=mysql_fetch_array($query){
> >> >> >               echo $row[nombre];
> >> >> >               mysql_query(UPDATE tabla SET status='2' WHERE
> id='6'")
> >> >> >              }
> >> >> >
> >> >> > entonces recoje los datos segun su id y si este es = a 1 lo trae
> >> sino no
> >> >> > niega, ahora yo a esto lo quiero hacer recorrer toda la base
> entonces
> >> >> pense
> >> >> > hacerlo con do while, ahora yo lo que solia hacer es
> >> >> >
> >> >> > do{
> >> >> > //hacer algo
> >> >> > }
> >> >> > while($query=TRUE)
> >> >> >
> >> >> > (supongamos) entonces cuanod ve un status 1 lo trae y lo renombre 2
> >> asi
> >> >> no
> >> >> > vuelve a traerlo pero jamas me respeta el $query=TRUE si este no es
> >> >> > verdadero sigue igual al bucle y jamas para, ¿alguno sabe que puedo
> >> >> estar
> >> >> > haciendo mal?.
> >> >> > Espero no haberlos mareado.
> >> >> >
> >> >> > Saludos!
> >> >> >
> >> >>
> >> >> Usa mysql_num_rows(),
> >> >> http://es.php.net/mysql_num_rows
> >> >>
> >> >> ejemplo:
> >> >>
> >> >> do{
> >> >> $query = mysql_query("SELECT * FROM db WHERE status='1' LIMIT 1");
> >> >>    if($row=mysql_fetch_array($query){
> >> >>       echo $row['nombre'];
> >> >>       mysql_query("UPDATE tabla SET status='2' WHERE id='6'")
> >> >>    }
> >> >> }
> >> >> while(mysql_num_rows($query));
> >> >>
> >> >> Y no seas bestia y ponle un LIMIT 1 si usas un while.
> >> >>
> >> >> Espero te sirva.
> >> >>
> >> >> Saludos,
> >> >>
> >> >> --
> >> >> Philipp Keweloh
> >> >>
> >> >
> >> >
> >> >
> >> > --
> >> >  Andrés Meseguer Rojas
> >> >
> >>
> >
> >
> >
> > --
> >  Andrés Meseguer Rojas
> >
>