diff --git a/src/commands.c b/src/commands.c
index 196fe65897fc90821918f5e88fe1cfd50ffa5232..b098144d1fead8acb66687f8430ef660918373fe 100644
--- a/src/commands.c
+++ b/src/commands.c
@@ -753,10 +753,10 @@ bool
 command_sticker_set(struct lkt_state *srv, size_t c, char *argv[LKT_MESSAGE_ARGS_MAX])
 {
     RETURN_UNLESS(argv[0] && argv[1] && argv[2] && argv[3] && !argv[4], "Invalid argument", false);
-    int uri, value, err1, err2;
-    char *endptr;
+    long uri, value;
+    char *endptr, err1, err2;
     STRTOL(uri, argv[1], endptr, err1);
-    STRTOL(value, argv[4], endptr, err2);
+    STRTOL(value, argv[3], endptr, err2);
     RETURN_IF(err1 || err2, "STRTOL failed", false);
     LOG_INFO_SCT("COMMAND", "Client %ld is using the sticker set command", c);
     RETURN_UNLESS(database_sticker_set(srv->db, argv[0], argv[2], uri, value), "Failed to get sticker", false);
diff --git a/src/database/stickers.c b/src/database/stickers.c
index 149be88f8bc25201ec3730d49eee2ba03f8ae567..b87991e2bd87a9c67574e21b38d3b2b5170f8788 100644
--- a/src/database/stickers.c
+++ b/src/database/stickers.c
@@ -61,14 +61,14 @@ database_sticker_set(volatile sqlite3 *db, const char *type, const char *name, i
         SQL =
             "INSERT OR REPLACE INTO 'stickers.kara' (id, sticker, value) "
             "SELECT ?, 'stickers'.id, ? "
-            "FROM 'stickers'"
-            "WHERE 'stickers'.id = ?;\n";
+            "FROM 'stickers' "
+            "WHERE 'stickers'.name = ?;";
     else if (!strcasecmp(type, "plt"))
         SQL =
             "INSERT OR REPLACE INTO 'stickers.plt' (id, sticker, value) "
             "SELECT ?, 'stickers'.id, ? "
-            "FROM 'stickers'"
-            "WHERE 'stickers'.id = ?;\n";
+            "FROM 'stickers' "
+            "WHERE 'stickers'.name = ?;";
     else {
         LOG_ERROR_SCT("DB", "Type '%s' is invalid", type);
         return false;