diff options
author | Felipe Pena <felipe@php.net> | 2011-03-05 23:07:45 +0000 |
---|---|---|
committer | Felipe Pena <felipe@php.net> | 2011-03-05 23:07:45 +0000 |
commit | 2f3f629fd4a6b80d2c12fb1b13c955cbefd9b805 (patch) | |
tree | 6cbb6602c5b2d22e65edca480f827a53da4f54f5 /ext/pdo_dblib | |
parent | bf5a3715f41053a1582d399ea73d0a6a6daf6dd3 (diff) | |
download | php-git-2f3f629fd4a6b80d2c12fb1b13c955cbefd9b805.tar.gz |
- Fixed bug #54167 (PDO_DBLIB returns null on SQLUNIQUE field)
# initial patch by: mjh at hodginsmedia dot com (5.3)
# trunk version by me
Diffstat (limited to 'ext/pdo_dblib')
-rw-r--r-- | ext/pdo_dblib/dblib_stmt.c | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/ext/pdo_dblib/dblib_stmt.c b/ext/pdo_dblib/dblib_stmt.c index 2f771609b7..e7c8d9e9db 100644 --- a/ext/pdo_dblib/dblib_stmt.c +++ b/ext/pdo_dblib/dblib_stmt.c @@ -25,6 +25,7 @@ #include "php.h" #include "php_ini.h" +#include "ext/standard/php_string.h" #include "ext/standard/info.h" #include "pdo/php_pdo.h" #include "pdo/php_pdo_driver.h" @@ -67,7 +68,6 @@ static int pdo_dblib_stmt_dtor(pdo_stmt_t *stmt TSRMLS_DC) static int pdo_dblib_stmt_execute(pdo_stmt_t *stmt TSRMLS_DC) { - pdo_dbh_t *dbh = stmt->dbh; pdo_dblib_stmt *S = (pdo_dblib_stmt*)stmt->driver_data; pdo_dblib_db_handle *H = S->H; RETCODE resret, ret; @@ -174,6 +174,23 @@ static int pdo_dblib_stmt_execute(pdo_stmt_t *stmt TSRMLS_DC) val->len = spprintf(&val->data, 0, "%.4f", money_value); } break; +#ifdef SQLUNIQUE + case SQLUNIQUE: { +#else + case 36: { /* FreeTDS hack, also used by ext/mssql */ +#endif + val->len = 36+1; + val->data = emalloc(val->len + 1); + + /* uniqueidentifier is a 16-byte binary number, convert to 32 char hex string */ +#ifdef SQLUNIQUE + val->len = dbconvert(NULL, SQLUNIQUE, dbdata(H->link, i+1), dbdatlen(H->link, i+1), SQLCHAR, val->data, val->len); +#else + val->len = dbconvert(NULL, 36, dbdata(H->link, i+1), dbdatlen(H->link, i+1), SQLCHAR, val->data, val->len); +#endif + php_strtoupper(val->data, val->len); + break; + } default: if (dbwillconvert(S->cols[i].coltype, SQLCHAR)) { val->len = 32 + (2 * dbdatlen(H->link, i+1)); |