summaryrefslogtreecommitdiff
path: root/ext/interbase/ibase_query.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/interbase/ibase_query.c')
-rw-r--r--ext/interbase/ibase_query.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/ext/interbase/ibase_query.c b/ext/interbase/ibase_query.c
index 0caf2b43a6..911417210b 100644
--- a/ext/interbase/ibase_query.c
+++ b/ext/interbase/ibase_query.c
@@ -307,6 +307,8 @@ static int _php_ibase_alloc_query(ibase_query *ib_query, ibase_db_link *link, /*
ib_query->dialect = dialect;
ib_query->query = estrdup(query);
ib_query->trans_res_id = trans_res_id;
+ ib_query->out_sqlda = NULL;
+ ib_query->in_sqlda = NULL;
if (isc_dsql_allocate_statement(IB_STATUS, &link->handle, &ib_query->stmt)) {
_php_ibase_error(TSRMLS_C);
@@ -989,10 +991,16 @@ static int _php_ibase_exec(INTERNAL_FUNCTION_PARAMETERS, ibase_result **ib_resul
i += len+3;
}
}
- if (affected_rows > 0) {
- ib_query->trans->affected_rows = affected_rows;
- RETVAL_LONG(affected_rows);
- break;
+
+ ib_query->trans->affected_rows = affected_rows;
+
+ if (!ib_query->out_sqlda) { /* no result set is being returned */
+ if (affected_rows) {
+ RETVAL_LONG(affected_rows);
+ } else {
+ /* this return value evaluates to bool(true) and to int(0) */
+ RETVAL_STRINGL("0 ",2,1);
+ }
}
default: