DOP ofrece una interfaz agradable pero más genericity también significa más problemas para hacer frente a las idiosincrasias sutiles de cada servidor. Si nos fijamos en the bugtracker, tiene una serie de problemas abiertos, y algunos de ellos son graves.
He aquí una evidencia anecdótica con postgresql: el analizador de PDO tiene problemas con standard_conforming_strings establecido en ON (que ahora es el predeterminado, a partir de PG-9.1). caso de prueba con php-5.3.9:
$dbh->exec("SET standard_conforming_strings=on");
$p=$dbh->prepare("SELECT 1 WHERE 'ab\' = :foo AND 'cd' = :bar");
$p->execute(array(":foo" => "ab", ":bar" => "cd"));
La ejecutar() falla inesperadamente en la capa de DOP con Database error: SQLSTATE[HY093]: Invalid parameter number: :foo
. Parece que no puede identificar: foo como parámetro.
Si la consulta se detiene después de 'ab\'=:foo
, sin otra condición, entonces funciona bien. O si la otra condición no incluye una cadena, también funciona bien.
El problema es similar a issue #55335, que fue despedido como no un error, equivocadamente en mi opinión. [En realidad, incluso he pirateado PDO yo mismo para arreglarlo, pero de una manera que es incompatible con otros procesadores, por lo que no hay parche. Me desconcertó que el analizador léxico de consultas fuera tan genérico.]
Por otro lado, pg_ * estar más cerca de LIBPQ, este tipo de problema es menos probable que suceda en el primer lugar, y más fácil de resolver si lo hace.
Así que mi punto sería que no todo es agradable con DOP. Internamente, sin duda es más desafiante que pg_ *, y más complejidad significa más errores. ¿Se tratan estos errores? Basado en ciertas entradas de bugtracker, no necesariamente.
@MorrisonHotel Perdón? – shadyyx
Mi comentario es malo, no :) Usted – MorrisonHotel
PostgreSQL: ** SELECT to_string (...) Desde el límite de mitabla 1 OFFSET 1 ** MySQL: SELECT ** DATE_FORMAT (...) Desde el límite de mitabla 1,1 ** Como vemos, incluso utilizando la DOP, voy a tener que volver a escribir todas las peticiones a la base de datos. Entonces, PDO no es una panacea. Tendré que usar Doctrine, Propel, etc. (está excluido). – MorrisonHotel