gpt4 book ai didi

c# - 'xy' 中的未知列 'where clause'

转载 作者:行者123 更新时间:2023-11-29 06:12:22 25 4
gpt4 key购买 nike

我正在使用这个查询

var query = $"SELECT id, username, password, salt FROM users WHERE username={username}";

假设 username 设置为 toxic,抛出的错误如下:

Unknown column 'toxic' in 'where clause'

我已经尝试添加单引号 ('),抛出另一个错误(在语法中有接近 'toxic' 的错误)。但是,我想知道该查询有什么问题?我详细阐述并找到了证据表明这来自查询本身。

最佳答案

如果 username 列是一个文本列,那么每次你想在这个列上搜索时,文字值应该用单引号括起来

string username = "Steve";
var query = $"SELECT id, username, password, salt FROM users WHERE username='{username}'";

然而,这是为两个主要问题制作查询文本的错误方法:

Sql 注入(inject):黑客用来在您的代码中插入可能破坏数据库数据的恶意文本的技术参见:Sql Injection

解析问题:包含单引号的字符串需要正确格式化,十进制值需要转换为具有正确的小数点分隔符的字符串,这些分隔符对数据库语言环境、日期……好吧……

因此参数方法将使您摆脱所有这些问题

var query = @"SELECT id, username, password, salt 
FROM users WHERE username=@username";
using(MySqlConnection cnn = new MySqlConnection(.......))
using(MySqlCommand cmd = new MySqlCommand(query, cnn))
{
cnn.Open();
cmd.Parameters.Add("@username", MySqlDbType.VarChar).Value = username;
using(MySqlDataReader reader = cmd.ExecuteReader())
{
..... use your data
}
}

关于c# - 'xy' 中的未知列 'where clause',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37634843/

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