Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

PHP OO Consulta con el rendimiento de PDO.

Estas en el tema de Consulta con el rendimiento de PDO. en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Buenas tengo dos dudas sobre el rendimiento de PDO , la primera es si al momento de hacer una consulta es mejor hacer la con ...
  #1 (permalink)  
Antiguo 19/10/2011, 08:38
Avatar de RIVERMILLOS  
Fecha de Ingreso: marzo-2010
Mensajes: 1.336
Antigüedad: 14 años, 1 mes
Puntos: 15
Consulta con el rendimiento de PDO.

Buenas tengo dos dudas sobre el rendimiento de PDO , la primera es si al momento de hacer una consulta es mejor hacer la con "prepare" o hacerla directamente con "query" , la segunda es si en este momento existe algo mejor que PDO.



saludos
  #2 (permalink)  
Antiguo 19/10/2011, 09:08
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Consulta con el rendimiento de PDO.

Es mejor hacerla con prepare, si vas a enviar múltiples queries, ya que esto compila el query previamente en el RDBMS y lo deja en un estado que puedes llamarla múltiples veces sin afectar el rendimiento.

El hacerla con query, no te da ningun beneficio y al contrario te puede dar más problemas ya que tu tienes que escapar tus variables para prevenir XSS.

PDO es el API oficial de PHP para conectarse a las bases de datos, muchos ORMs, y Frameworks construyen sus clases encima de PDO por su flexibilidad.

Saludos.
  #3 (permalink)  
Antiguo 19/10/2011, 10:09
Avatar de RIVERMILLOS  
Fecha de Ingreso: marzo-2010
Mensajes: 1.336
Antigüedad: 14 años, 1 mes
Puntos: 15
Respuesta: Consulta con el rendimiento de PDO.

Muchas gracias por tu respuesta ya que mencionaste lo de las variables con PDO al colocar ? en el prepare lo puedo colocar en cualquier cosa osea si quiero colocar id dentro de un IN() lo puedo hacer asi IN ( ? ) ..


saludos
  #4 (permalink)  
Antiguo 19/10/2011, 10:22
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Consulta con el rendimiento de PDO.

Si quieres expandir un array en eso, creo no es posible a menos que escapes los valores que deben de ir, no es tan automatizado todo, solo te permite inyectar parámetros de esa forma.

En el mismo manual lo indica:
Cita:
You must include a unique parameter marker for each value you wish to pass in to the statement when you call PDOStatement::execute(). You cannot use a named parameter marker of the same name twice in a prepared statement. You cannot bind multiple values to a single named parameter in, for example, the IN() clause of an SQL statement.
  #5 (permalink)  
Antiguo 19/10/2011, 10:34
Avatar de RIVERMILLOS  
Fecha de Ingreso: marzo-2010
Mensajes: 1.336
Antigüedad: 14 años, 1 mes
Puntos: 15
Respuesta: Consulta con el rendimiento de PDO.

Sengun lo que entendi es que si se pude pero no con un array si no con los datos directamente como String.?


saludos
  #6 (permalink)  
Antiguo 19/10/2011, 10:49
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Consulta con el rendimiento de PDO.

Así es si los pones como string funcionará directamente, pero si vas a aceptar diferentes parámetros no te conviene, por ejemplo:

SELECT * FROM foo WHERE bar IN (?, ?, ?)

Solo te soportaría 3 parámetros, siempre, no podrías enviar solo 1 o 2, o 4.

Etiquetas: rendimiento
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:44.