Purtroppo,
È un PDO_ODBC
Problema di incompatibilità a 64 bit (#61777
, #64824
) e senza dubbio sei su una build a 64 bit che non ti permette di associare parametri.
Fortunatamente,
Ha una patch che è stato incluso per la prima volta nella versione 5.6:
Cosa c'è che non va nel PDO_ODBC
spedito del tuo PHP ?
Osservando una di quelle patch consigliate:
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;
Vediamo che l'unica cosa che è cambiata è SDWORD
(intero con segno a 16 bit) che viene sostituito con il nuovo tipo ODBC SQLULEN
ovvero 64 bit in un'applicazione ODBC a 64 bit e 32 bit in un'applicazione ODBC a 32 bit
.
Credo che il committente non fosse a conoscenza di colsize
tipo di dati solo poiché nella riga successiva SQLLEN
è definito correttamente.
Cosa devo fare adesso?
- Aggiorna alla versione PHP>=5.6
- Rimani con
odbc_*
funziona come una soluzione di lavoro. - Compila un PHP v5.5.9 con le patch fornite.
- Costruisci il tuo wrapper PDO come consigliato da @GordonM