]> granicus.if.org Git - php/commitdiff
Adding support for BINARY, VARBINARY and IMAGE column types.
authorFrank M. Kromann <fmk@php.net>
Tue, 1 May 2001 18:01:08 +0000 (18:01 +0000)
committerFrank M. Kromann <fmk@php.net>
Tue, 1 May 2001 18:01:08 +0000 (18:01 +0000)
Thanks to Brad LaFountain.

ext/mssql/php_mssql.c

index b9fdf811ef52263d9b2b5f2e53d09973a156c7b9..fd4284f2f91d5deafb02933afe38c5c66e766108 100644 (file)
@@ -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);