diff --git a/ibase_query.c b/ibase_query.c index 052d97c5..57fe3c0b 100644 --- a/ibase_query.c +++ b/ibase_query.c @@ -796,7 +796,7 @@ static int _php_ibase_bind(ibase_query *ib_query, zval *b_vars) /* {{{ */ convert_to_string(b_var); var->sqldata = Z_STRVAL_P(b_var); var->sqllen = (ISC_SHORT)Z_STRLEN_P(b_var); - var->sqltype = SQL_TEXT; // Here: sqltype is modfied, can't rely on it for next calls + var->sqltype = SQL_TEXT | (var->sqltype & 1); // preserve nullable bit (issue #106) // Another way to send string w/o converting base zval // zend_string *str = zval_get_string(b_var); diff --git a/tests/issue106_001.phpt b/tests/issue106_001.phpt new file mode 100644 index 00000000..5cbe1d14 --- /dev/null +++ b/tests/issue106_001.phpt @@ -0,0 +1,50 @@ +--TEST-- +Issue #106: _php_ibase_bind() loses NULL flag when handling SQL_TEXT fallthrough +--SKIPIF-- + +--FILE-- + +--EXPECT-- +ID=1 VAL='hello' +ID=2 VAL=NULL +ID=3 VAL='world'