Infelizmente,
É um
PDO_ODBC
Problema de incompatibilidade de 64 bits (#61777
, #64824
) e sem dúvidas você está em uma compilação de 64 bits que não permite vincular parâmetros. Felizmente,
Tem um patch que foi incluído pela primeira vez na versão 5.6:
O que há de errado com o PDO_ODBC
do seu PHP enviado ?
Ao olhar para um desses patches 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 a única coisa que mudou foi
SDWORD
(inteiro com sinal de 16 bits) que é substituído pelo novo tipo ODBC SQLULEN
que é 64 bits em um aplicativo ODBC de 64 bits e 32 bits em um aplicativo ODBC de 32 bits
. Acredito que o committer não estava ciente de
colsize
tipo de dados apenas, pois na próxima linha SQLLEN
está definido corretamente. O que devo fazer agora?
- Atualize para a versão do PHP>=5.6
- Fique com
odbc_*
funciona como uma solução de trabalho. - Compile um PHP v5.5.9 com os patches fornecidos.
- Crie seu próprio wrapper PDO conforme recomendado por @GordonM