summaryrefslogtreecommitdiff
path: root/ext/mssql/php_mssql.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/mssql/php_mssql.c')
-rw-r--r--ext/mssql/php_mssql.c33
1 files changed, 32 insertions, 1 deletions
diff --git a/ext/mssql/php_mssql.c b/ext/mssql/php_mssql.c
index b9fdf811ef..fd4284f2f9 100644
--- a/ext/mssql/php_mssql.c
+++ b/ext/mssql/php_mssql.c
@@ -729,6 +729,22 @@ static void php_mssql_get_column_content_with_type(mssql_link *mssql_ptr,int off
result->type = IS_DOUBLE;
break;
}
+ case SQLVARBINARY:
+ case SQLBINARY:
+ case SQLIMAGE: {
+ DBBINARY *bin;
+ unsigned char *res_buf;
+ int res_length = dbdatlen(mssql_ptr->link,offset);
+
+ res_buf = (unsigned char *) emalloc(res_length);
+ memset(res_buf, 0, res_length);
+ bin = ((DBBINARY *)dbdata(mssql_ptr->link,offset));
+ memcpy(res_buf,bin,res_length);
+ result->value.str.len = res_length;
+ result->value.str.val = res_buf;
+ result->type = IS_STRING;
+ }
+ break;
case SQLNUMERIC:
default: {
if (dbwillconvert(column_type,SQLCHAR)) {
@@ -759,7 +775,22 @@ static void php_mssql_get_column_content_without_type(mssql_link *mssql_ptr,int
return;
}
- if (dbwillconvert(coltype(offset),SQLCHAR)) {
+ if (column_type == SQLVARBINARY ||
+ column_type == SQLBINARY ||
+ column_type == SQLIMAGE) {
+ DBBINARY *bin;
+ unsigned char *res_buf;
+ int res_length = dbdatlen(mssql_ptr->link,offset);
+
+ res_buf = (unsigned char *) emalloc(res_length);
+ memset(res_buf, 0, res_length);
+ bin = ((DBBINARY *)dbdata(mssql_ptr->link,offset));
+ memcpy(res_buf,bin,res_length);
+ result->value.str.len = res_length;
+ result->value.str.val = res_buf;
+ result->type = IS_STRING;
+ }
+ else if (dbwillconvert(coltype(offset),SQLCHAR)) {
unsigned char *res_buf;
int res_length = dbdatlen(mssql_ptr->link,offset);