gpt4 book ai didi

mysql - MySQL 中的参数化字符串和通配符

转载 作者:行者123 更新时间:2023-11-29 23:17:18 25 4
gpt4 key购买 nike

我正在尝试为数据库搜索操作构建一个 MySQL 查询,其中用户可以指定一个文本字符串来匹配特定列。我认为使用 LIKE 运算符并用 % 符号包围用户输入作为通配符,将是最佳实践。我希望通配符出现在开头和结尾,这样用户就不必输入整个字符串。此外,我想参数化查询以避免注入(inject)等。这给我留下了一个看起来像这样的查询:

SELECT * FROM `sometable`
WHERE `name` LIKE ?
ORDER BY `id` ASC
LIMIT 1,10

(请注意,name 列是带有排序规则 utf8_general_ci 的 VARCHAR(50)。)

WHERE 子句中的参数添加方式如下:

Using cmd As New OdbcCommand()
cmd.Parameters.AddWithValue("name", "%" & strUserInput & "%")
...

但是,我现在得到的结果似乎是 MySQL 实际上将 name 列与连接的字符串进行匹配,将 % 视为文字,而不是像我预期的那样将其视为通配符。我也尝试过 LIKE CONCAT('%', ?, '%'),但这也不起作用。

如何将通配符粘贴到参数化字符串的开头和结尾?或者有更好的方法吗?

最佳答案

您的 SqlParameter 名称是 @name 而不是 name : cmd.Parameters.AddWithValue("@name", string.Format("%{0}% “,strUserInput);

你的sql应该是:

SELECT * FROM `sometable`
WHERE `name` LIKE @name
ORDER BY `id` ASC
LIMIT 1,10

关于mysql - MySQL 中的参数化字符串和通配符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27662141/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com