2011-10-27 20 views
5

los 5 años (! en realidad) Wez Furlong fue el desarrollador principal de DOP y escribió esto:¿Puedo usar declaraciones preparadas reales para MySQL con PDO ahora? Hace

recomiendo que utilice el atributo siguiente cuando se trabaja con PDO :: MySQL, disponible en el PHP actual 5.1.3 versión candidatos y instantáneas:

$ db-> setAttribute (PDO :: ATTR_EMULATE_PREPARES, true);

Esto hace que se utilice el analizador de consultas nativas PDO en lugar de las API de declaraciones nativas preparadas en el cliente mysql, y efectivamente elimina esos problemas.

Fundamento se da en http://wezfurlong.org/blog/2006/apr/using-pdo-mysql/

Sin embargo, no podía responder si los problemas se hayan solucionado ahora que DOP está utilizando mysqlnd (al menos supongo que lo es).

¿Alguien sabe?

Respuesta

6

Sí, si configura ATTR_EMULATE_PREPARES en false (o 0) utilizará las declaraciones preparadas reales.

Tipo de. Todavía tiene toda la lógica de respaldo. Entonces, si mysqli :: prepare fallaría si fallara la preparación del servidor, PDO no lo hará, ya que volverá a emular la preparación. La razón de esto es para que PDO pueda usar declaraciones preparadas en versiones de MySQL que no lo admitan, así como para declaraciones (como ALTER) que no admiten la preparación.

Por lo tanto, utilizará declaraciones preparadas reales siempre que MySQL le permita (de nuevo, solo si ATTR_EMULATE_PREPARES es falso) ...

Cuestiones relacionadas