mariadb 如何正确连接包含用户输入的字符串

lnvxswe2  于 2022-11-08  发布在  其他
关注(0)|答案(1)|浏览(166)

当我从我的数据库中获取用户输入字符串时,我在决定如何将它们串接起来时遇到了麻烦。“或者“,”我想出的解决办法是编造一些疯狂的字符串,我用它们作为分隔符f.ex.“-^-^;“我敢肯定用户不会按照这个顺序使用它们,如果他们这样做,唯一会被搞砸的就是前端。这感觉很糟糕,所以我在寻找一个更好的解决方案。”


# Wont be consumable by backend since there can be "," in user input

SELECT 
   id
   GROUP_CONCAT(my_entry.name SEPARATOR ",")
   FROM my_entry
   GROUP BY my_entry.id;

# This will work in 99% of cases but feels very hacky

SELECT 
   id
   GROUP_CONCAT(my_entry.name SEPARATOR "-^-^;^-^-^") AS names
   FROM my_entry
   GROUP BY my_entry.id;

在我的后端,我获取数据并将其转换为数组。

let myData = await getDataForMyEntry()
myData.names = myData.names.split("-^-^;^-^-^")

任何帮助都将不胜感激!

vsikbqxv

vsikbqxv1#

如何使用一个不可打印的ascii字符,这是有效的unicode,但可能不会在任何用户输入使用。
例如,chr(8)=退格

SELECT 
   id
   GROUP_CONCAT(my_entry.name SEPARATOR X'08') AS names
   FROM my_entry
   GROUP BY my_entry.id;

然后用

myData.names = myData.names.split('\x08')

相关问题