From 50beaf9a1fd7a9ec7f85baed9071ac4e27c90b4c Mon Sep 17 00:00:00 2001 From: Kazhnuz Date: Thu, 17 Jul 2025 20:31:05 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20Fix=20unique?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kernel/database.php | 7 +++++++ kernel/helpers/validators.php | 8 +++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/kernel/database.php b/kernel/database.php index bd9121a..39a48b0 100644 --- a/kernel/database.php +++ b/kernel/database.php @@ -29,6 +29,13 @@ class Database { return $stmt; } + public function checkUnique($table, $field, $value) { + $query = "SELECT * from {{table}} where {{field}} = :fieldValue"; + $query = str_replace("{{field}}", $field, $query); + $stmt = $this->doquery($table, $query, ['fieldValue' => $value]); + return $stmt->fetch(PDO::FETCH_ASSOC) != null; + } + public function getNumQueries() { return $this->numqueries; } diff --git a/kernel/helpers/validators.php b/kernel/helpers/validators.php index 2040f60..90eedb7 100644 --- a/kernel/helpers/validators.php +++ b/kernel/helpers/validators.php @@ -57,14 +57,16 @@ class Validator { } public function unique($name, $array, $keys, $database) { + global $db; + $value = Validator::getValue($array, $keys); $table = $database["table"]; $dbField = $database["field"]; - $query = doquery("SELECT ${dbField} FROM {{table}} WHERE ${dbField}='$value' LIMIT 1", $table); - if (mysqli_num_rows($query) > 0) { - return "{$name} already taken, it must be unique"; + if ($db->checkUnique($table, $dbField, $value)) { + return "{$value} already taken, it must be unique"; } + return null; } } \ No newline at end of file