@@ -1120,7 +1120,17 @@ PHP_FUNCTION(pg_query_params)
11201120 if (Z_TYPE_P (tmp ) == IS_NULL ) {
11211121 params [i ] = NULL ;
11221122 } else {
1123- zend_string * param_str = zval_try_get_string (tmp );
1123+ zend_string * param_str ;
1124+ /**
1125+ * zval_try_get_string returns an empty zend_string
1126+ * for false which is correct in general
1127+ * but not adequate for bool values in the db
1128+ */
1129+ if (Z_TYPE_P (tmp ) == IS_FALSE ) {
1130+ param_str = ZSTR_CHAR ('0' );
1131+ } else {
1132+ param_str = zval_try_get_string (tmp );
1133+ }
11241134 if (!param_str ) {
11251135 _php_pgsql_free_params (params , num_params );
11261136 RETURN_THROWS ();
@@ -3754,9 +3764,18 @@ PHP_FUNCTION(pg_send_query_params)
37543764 if (Z_TYPE_P (tmp ) == IS_NULL ) {
37553765 params [i ] = NULL ;
37563766 } else {
3757- zend_string * tmp_str ;
3758- zend_string * str = zval_get_tmp_string (tmp , & tmp_str );
3759-
3767+ zend_string * str , * tmp_str ;
3768+ /**
3769+ * zval_get_tmp_string returns an empty zend_string
3770+ * for false which is correct in general
3771+ * but not adequate for bool values in the db
3772+ */
3773+ if (Z_TYPE_P (tmp ) == IS_FALSE ) {
3774+ tmp_str = ZSTR_CHAR ('0' );
3775+ str = tmp_str ;
3776+ } else {
3777+ str = zval_get_tmp_string (tmp , & tmp_str );
3778+ }
37603779 params [i ] = estrndup (ZSTR_VAL (str ), ZSTR_LEN (str ));
37613780 zend_tmp_string_release (tmp_str );
37623781 }
0 commit comments