mysql查询宽度的语法错误选择并限制[重复]

问题描述 投票:-1回答:1

这个问题在这里已有答案:

我收到一个错误,即mysql数据库上的查询语法错误。代码应该检查标签数据库中是否存在字符串{Rfid},如果不创建它。异常是在第一个MySqlcmd.CommandText中引起的但是我没有看到它们,它们是正常的mysql动词,唯一的特性可能是Rfid可以包含空格,但我不明白为什么会产生问题。

OpenConnection(); //a function to connect, no problems here.
MySqlDataReader reader;
MySqlcmd.CommandText = $"SELECT * FROM 'Tags' WHERE 'UHFRFID'=\"'{Rfid}'\"   LIMIT 1;";
reader = MySqlcmd.ExecuteReader();  // >> crashes

        //create a new tag in table, if its unknown.
        if (!reader.HasRows)
        {
            try
            {
                MySqlcmd.CommandText = $"INSERT INTO `Tags` (`TagId`,  `UHFRFID`, `Gate1`) VALUES(NULL,\"'{Rfid}'\",  NULL);";
                MySqlcmd.CommandType = System.Data.CommandType.Text;
                MySqlcmd.ExecuteNonQuery();
            }
            catch
            { }

我得到的MySQL错误是:

MySql.Data.MySqlClient.MySqlException:'你的SQL语法有错误;检查与MySQL服务器版本对应的手册,以获得正确的语法 在''标签'附近使用WHERE'UHFRFID'='标签13 00000'限制1'在第1行'

c# mysql mysql-error-1064
1个回答
1
投票

更换

MySqlcmd.CommandText = $"SELECT * FROM 'Tags' WHERE 'UHFRFID'=\"'{Rfid}'\"    LIMIT 1;";

MySqlcmd.CommandText = $"SELECT * FROM `Tags` WHERE `UHFRFID`=\"'{Rfid}'\"    LIMIT 1;";

TagsUHFRFID是表/列名,而不是字符串值。

你必须使用反引号qazxsw poi而不是单引号qazxsw poi

© www.soinside.com 2019 - 2024. All rights reserved.