prepare($sql); if ($types !== '') { $stmt->bind_param($types, ...$params); } $stmt->execute(); return $stmt; } /** Run a query and return all rows as associative arrays. */ function pqs_rows(string $sql, string $types = '', array $params = []): array { $stmt = pqs_exec($sql, $types, $params); $res = $stmt->get_result(); $rows = $res ? $res->fetch_all(MYSQLI_ASSOC) : []; $stmt->close(); return $rows; } /** Run a query and return the first row (assoc) or null. */ function pqs_row(string $sql, string $types = '', array $params = []): ?array { return pqs_rows($sql, $types, $params)[0] ?? null; } /** Run a query and return a single scalar (first column of first row) or null. */ function pqs_val(string $sql, string $types = '', array $params = []) { $stmt = pqs_exec($sql, $types, $params); $res = $stmt->get_result(); $val = ($res && ($r = $res->fetch_row())) ? $r[0] : null; $stmt->close(); return $val; }