@@ -567,20 +567,19 @@ static int _php_ibase_bind_array(zval *val, char *buf, zend_ulong buf_size, /* {
567567
568568static int _php_ibase_bind (ibase_query * ib_query , zval * b_vars ) /* {{{ */
569569{
570- BIND_BUF * buf = ib_query -> bind_buf ;
571- XSQLDA * sqlda = ib_query -> in_sqlda ;
572-
570+ // BIND_BUF *buf = ib_query->bind_buf;
571+ // XSQLDA *sqlda = ib_query->in_sqlda;
573572 int i , array_cnt = 0 , rv = SUCCESS ;
574573
575- for (i = 0 ; i < sqlda -> sqld ; ++ i ) { /* bound vars */
574+ for (i = 0 ; i < ib_query -> in_sqlda -> sqld ; ++ i ) { /* bound vars */
576575 zval * b_var = & b_vars [i ];
577- XSQLVAR * var = & sqlda -> sqlvar [i ];
576+ XSQLVAR * var = & ib_query -> in_sqlda -> sqlvar [i ];
578577
579578 // We need keep track of original type because XSQLVAR type could get modified
580579 var -> sqltype = ib_query -> sql_types [i ];
581580
582- var -> sqlind = & buf [i ].nullind ;
583- var -> sqldata = (void * )& buf [i ].val ;
581+ var -> sqlind = & ib_query -> bind_buf [i ].nullind ;
582+ var -> sqldata = (void * )& ib_query -> bind_buf [i ].val ;
584583
585584 /* check if a NULL should be inserted */
586585 switch (Z_TYPE_P (b_var )) {
@@ -613,7 +612,7 @@ static int _php_ibase_bind(ibase_query *ib_query, zval *b_vars) /* {{{ */
613612 if (! force_null ) break ;
614613
615614 case IS_NULL :
616- buf [ i ]. nullind = -1 ;
615+ * var -> sqlind = -1 ;
617616
618617 if (var -> sqltype & SQL_ARRAY ) ++ array_cnt ;
619618
@@ -622,7 +621,7 @@ static int _php_ibase_bind(ibase_query *ib_query, zval *b_vars) /* {{{ */
622621
623622 /* if we make it to this point, we must provide a value for the parameter */
624623
625- buf [ i ]. nullind = 0 ;
624+ * var -> sqlind = 0 ;
626625
627626 switch (var -> sqltype & ~1 ) {
628627 struct tm t ;
@@ -663,14 +662,14 @@ static int _php_ibase_bind(ibase_query *ib_query, zval *b_vars) /* {{{ */
663662
664663 switch (var -> sqltype & ~1 ) {
665664 default : /* == case SQL_TIMESTAMP */
666- isc_encode_timestamp (& t , & buf [i ].val .tsval );
665+ isc_encode_timestamp (& t , & ib_query -> bind_buf [i ].val .tsval );
667666 break ;
668667 case SQL_TYPE_DATE :
669- isc_encode_sql_date (& t , & buf [i ].val .dtval );
668+ isc_encode_sql_date (& t , & ib_query -> bind_buf [i ].val .dtval );
670669 break ;
671670 case SQL_TYPE_TIME :
672671 // TODO: case SQL_TIME_TZ:
673- isc_encode_sql_time (& t , & buf [i ].val .tmval );
672+ isc_encode_sql_time (& t , & ib_query -> bind_buf [i ].val .tmval );
674673 break ;
675674 }
676675 continue ;
@@ -680,7 +679,7 @@ static int _php_ibase_bind(ibase_query *ib_query, zval *b_vars) /* {{{ */
680679 convert_to_string (b_var );
681680
682681 if (Z_STRLEN_P (b_var ) != BLOB_ID_LEN ||
683- !_php_ibase_string_to_quad (Z_STRVAL_P (b_var ), & buf [i ].val .qval )) {
682+ !_php_ibase_string_to_quad (Z_STRVAL_P (b_var ), & ib_query -> bind_buf [i ].val .qval )) {
684683
685684 ibase_blob ib_blob = { 0 };
686685 ib_blob .type = BLOB_INPUT ;
@@ -699,7 +698,7 @@ static int _php_ibase_bind(ibase_query *ib_query, zval *b_vars) /* {{{ */
699698 _php_ibase_error ();
700699 return FAILURE ;
701700 }
702- buf [i ].val .qval = ib_blob .bl_qd ;
701+ ib_query -> bind_buf [i ].val .qval = ib_blob .bl_qd ;
703702 }
704703 continue ;
705704#ifdef SQL_BOOLEAN
@@ -743,7 +742,7 @@ static int _php_ibase_bind(ibase_query *ib_query, zval *b_vars) /* {{{ */
743742 break ;
744743 }
745744 case IS_NULL :
746- buf [ i ]. nullind = -1 ;
745+ * var -> sqlind = -1 ;
747746 break ;
748747 default :
749748 _php_ibase_module_error ("Parameter %d: must be boolean" , i + 1 );
@@ -759,7 +758,7 @@ static int _php_ibase_bind(ibase_query *ib_query, zval *b_vars) /* {{{ */
759758 convert_to_string (b_var );
760759
761760 if (Z_STRLEN_P (b_var ) != BLOB_ID_LEN ||
762- !_php_ibase_string_to_quad (Z_STRVAL_P (b_var ), & buf [i ].val .qval )) {
761+ !_php_ibase_string_to_quad (Z_STRVAL_P (b_var ), & ib_query -> bind_buf [i ].val .qval )) {
763762
764763 _php_ibase_module_error ("Parameter %d: invalid array ID" ,i + 1 );
765764 rv = FAILURE ;
@@ -784,7 +783,7 @@ static int _php_ibase_bind(ibase_query *ib_query, zval *b_vars) /* {{{ */
784783 efree (array_data );
785784 return FAILURE ;
786785 }
787- buf [i ].val .qval = array_id ;
786+ ib_query -> bind_buf [i ].val .qval = array_id ;
788787 efree (array_data );
789788 }
790789 ++ array_cnt ;
@@ -796,6 +795,12 @@ static int _php_ibase_bind(ibase_query *ib_query, zval *b_vars) /* {{{ */
796795 var -> sqldata = Z_STRVAL_P (b_var );
797796 var -> sqllen = (ISC_SHORT )Z_STRLEN_P (b_var );
798797 var -> sqltype = SQL_TEXT ; // Here: sqltype is modfied, can't rely on it for next calls
798+
799+ // Another way to send string w/o converting base zval
800+ // zend_string *str = zval_get_string(b_var);
801+ // var->sqldata = ZSTR_VAL(str);
802+ // var->sqllen = (ISC_SHORT)ZSTR_LEN(str);
803+ // zend_string_release(str);
799804 } /* for */
800805 return rv ;
801806}
0 commit comments