@@ -1199,7 +1199,17 @@ PHP_FUNCTION(pg_query_params)
11991199 if (Z_TYPE_P (tmp ) == IS_NULL ) {
12001200 params [i ] = NULL ;
12011201 } else {
1202- zend_string * param_str = zval_try_get_string (tmp );
1202+ zend_string * param_str ;
1203+ /**
1204+ * zval_try_get_string returns an empty zend_string
1205+ * for false which is correct in general
1206+ * but not adequate for bool values in the db
1207+ */
1208+ if (Z_TYPE_P (tmp ) == IS_FALSE ) {
1209+ param_str = ZSTR_CHAR ('0' );
1210+ } else {
1211+ param_str = zval_try_get_string (tmp );
1212+ }
12031213 if (!param_str ) {
12041214 _php_pgsql_free_params (params , num_params );
12051215 RETURN_THROWS ();
@@ -3750,9 +3760,18 @@ PHP_FUNCTION(pg_send_query_params)
37503760 if (Z_TYPE_P (tmp ) == IS_NULL ) {
37513761 params [i ] = NULL ;
37523762 } else {
3753- zend_string * tmp_str ;
3754- zend_string * str = zval_get_tmp_string (tmp , & tmp_str );
3755-
3763+ zend_string * str , * tmp_str ;
3764+ /**
3765+ * zval_get_tmp_string returns an empty zend_string
3766+ * for false which is correct in general
3767+ * but not adequate for bool values in the db
3768+ */
3769+ if (Z_TYPE_P (tmp ) == IS_FALSE ) {
3770+ tmp_str = ZSTR_CHAR ('0' );
3771+ str = tmp_str ;
3772+ } else {
3773+ str = zval_get_tmp_string (tmp , & tmp_str );
3774+ }
37563775 params [i ] = estrndup (ZSTR_VAL (str ), ZSTR_LEN (str ));
37573776 zend_tmp_string_release (tmp_str );
37583777 }
0 commit comments