diff options
-rw-r--r-- | it_dbi.class | 4 | ||||
-rwxr-xr-x | test/it_dbi.t | 2 |
2 files changed, 5 insertions, 1 deletions
diff --git a/it_dbi.class b/it_dbi.class index 00d5c99..7223904 100644 --- a/it_dbi.class +++ b/it_dbi.class @@ -269,11 +269,13 @@ function _set($tags, $force = false) { if (is_null($value)) $deldyns[] = "'\$.$f'"; + if (is_int($value)) + $newdyns[] = "'\$.$f', $value"; else $newdyns[] = "'\$.$f', " . $this->escape_string($value); } - $alldyns[] = $this->escape_string($f) . ", " . (substr($field, 0, 1) === "-" ? $value : $this->escape_string($value)); + $alldyns[] = $this->escape_string($f) . ", " . (substr($field, 0, 1) === "-" || is_int($value) ? $value : $this->escape_string($value)); $dyndata[$f] = $value; } else if (substr($field, 0, 1) === '-') # Unquoted value (always added) diff --git a/test/it_dbi.t b/test/it_dbi.t index 45f70d4..5737404 100755 --- a/test/it_dbi.t +++ b/test/it_dbi.t @@ -323,6 +323,8 @@ is( # REPLACE (without and with quoting) $r = new it_dbi_test; $r->replace(['ID' => 5, '-key1' => "2*2"]); is($r->key1, 4); +$r->replace(['ID' => 5, 'key1' => 42]); is(json_encode($r->key1), json_encode(42), "Preserve type int on dyncols insert"); +$r->update(['key1' => 43]); is(json_encode($r->key1), json_encode(43), "Preserve type int on dyncols update"); $r->replace(['ID' => 5, 'key1' => "val0'"]); is($r->key1, "val0'"); # UPDATE with WHERE (without and with quoting) |