From 86aa0f5cf9b4e408d4ccb33608277c8377520b06 Mon Sep 17 00:00:00 2001 From: flashwave Date: Wed, 27 Feb 2019 13:30:07 +0100 Subject: [PATCH] Don't reprepare already prepared statements. --- src/db.php | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/db.php b/src/db.php index 84ad75c7..ca2d1b15 100644 --- a/src/db.php +++ b/src/db.php @@ -31,6 +31,18 @@ function db_connection(?string $name = null): ?PDO } function db_prepare(string $statement, ?string $connection = null, $options = []): PDOStatement +{ + static $stmts = []; + $encodedOptions = serialize($options); + + if (!empty($stmts[$connection][$statement][$encodedOptions])) { + return $stmts[$connection][$statement][$encodedOptions]; + } + + return $stmts[$connection][$statement][$encodedOptions] = db_prepare_direct($statement, $connection, $options); +} + +function db_prepare_direct(string $statement, ?string $connection = null, $options = []): PDOStatement { return db_connection($connection)->prepare($statement, $options); }