diff --git a/system/Database/Postgre/Builder.php b/system/Database/Postgre/Builder.php index 453aabe51c38..6f54517d20b1 100644 --- a/system/Database/Postgre/Builder.php +++ b/system/Database/Postgre/Builder.php @@ -179,6 +179,7 @@ public function replace(?array $set = null) unset($builder); $this->resetWrite(); + $this->binds = []; return $result; } diff --git a/tests/system/Database/Live/InsertTest.php b/tests/system/Database/Live/InsertTest.php index 4143ef1f6ddd..210434ccb2bc 100644 --- a/tests/system/Database/Live/InsertTest.php +++ b/tests/system/Database/Live/InsertTest.php @@ -92,6 +92,38 @@ public function testReplaceWithMatchingData() $this->assertSame('Cab Driver', $row->name); } + /** + * @see https://github.com/codeigniter4/CodeIgniter4/issues/6726 + */ + public function testReplaceTwice() + { + $builder = $this->db->table('job'); + + $data = [ + 'id' => 1, + 'name' => 'John Smith', + 'description' => 'American', + ]; + $builder->replace($data); + + $row = $this->db->table('job') + ->getwhere(['id' => 1]) + ->getRow(); + $this->assertSame('John Smith', $row->name); + + $data = [ + 'id' => 2, + 'name' => 'Hans Schmidt', + 'description' => 'German', + ]; + $builder->replace($data); + + $row = $this->db->table('job') + ->getwhere(['id' => 2]) + ->getRow(); + $this->assertSame('Hans Schmidt', $row->name); + } + public function testBug302() { $code = "my code \\'CodeIgniter\\Autoloader\\'"; diff --git a/user_guide_src/source/changelogs/v4.2.8.rst b/user_guide_src/source/changelogs/v4.2.8.rst index cb72117c3341..2d69f6c709ef 100644 --- a/user_guide_src/source/changelogs/v4.2.8.rst +++ b/user_guide_src/source/changelogs/v4.2.8.rst @@ -37,5 +37,6 @@ Bugs Fixed ********** - Fixed a bug when the ``CodeIgniter\HTTP\IncomingRequest::getPostGet()`` and ``CodeIgniter\HTTP\IncomingRequest::getGetPost()`` methods didn't return values from the other stream when ``index`` was set to ``null``. +- Fixed a bug when ``binds`` weren't cleaned properly when calling ``CodeIgniter\Database\Postgre::replace()`` multiple times in the context. See the repo's `CHANGELOG.md `_ for a complete list of bugs fixed.