Desafortunadamente,
Es un PDO_ODBC
Problema de incompatibilidad de 64 bits (#61777
, #64824
) y sin ninguna duda estás en una compilación de 64 bits que no te permite enlazar parámetros.
Afortunadamente,
Tiene parche que se incluyó por primera vez en la versión 5.6:
¿Qué tiene de malo el PDO_ODBC
enviado de PHP? ?
Mirando uno de esos parches recomendados:
diff --git a/ext/pdo_odbc/odbc_stmt.c b/ext/pdo_odbc/odbc_stmt.c
index 8b0ccf3..1d275cd 100644
--- a/ext/pdo_odbc/odbc_stmt.c
+++ b/ext/pdo_odbc/odbc_stmt.c
@@ -551,7 +551,7 @@ static int odbc_stmt_describe(pdo_stmt_t *stmt, int colno TSRMLS_DC)
struct pdo_column_data *col = &stmt->columns[colno];
RETCODE rc;
SWORD colnamelen;
- SDWORD colsize;
+ SQLULEN colsize;
SQLLEN displaysize;
Vemos que lo único que ha cambiado es SDWORD
(entero con signo de 16 bits) que se sustituye por el nuevo tipo ODBC SQLULEN
es decir 64 bits en una aplicación ODBC de 64 bits y 32 bits en una aplicación ODBC de 32 bits
.
Creo que el autor no estaba al tanto de colsize
tipo de datos solo porque en la siguiente línea SQLLEN
se define correctamente.
¿Qué debo hacer ahora?
- Actualizar a la versión de PHP>=5.6
- Quédese con
odbc_*
funciona como una solución de trabajo. - Compila un PHP v5.5.9 con los parches provistos.
- Cree su propia envoltura de PDO según lo recomendado por @GordonM