Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何添加';是否喜欢mysql varchar数据类型列中的特殊字符?_C#_Mysql_Visual Studio - Fatal编程技术网

C# 如何添加';是否喜欢mysql varchar数据类型列中的特殊字符?

C# 如何添加';是否喜欢mysql varchar数据类型列中的特殊字符?,c#,mysql,visual-studio,C#,Mysql,Visual Studio,我试图通过查询将字符串作为“baby's world”插入varchar类型的列中,但显示了错误。 我还需要在查询中添加其他内容,以便它接受该符号在其前面添加一个反斜杠,如下所示: "Baby\'s world" 您可以使用以下命令在字符串中查找并替换它们: str.Replace('\'', '\\\'') 我对最后一部分不是100%确定,但您需要通过在前面添加\来“转义”和。因此,它似乎没问题(无法测试,因为我不是C#程序员。插入表(字段)值('baby's world')将失败,因为字

我试图通过查询将字符串作为“baby's world”插入varchar类型的列中,但显示了错误。
我还需要在查询中添加其他内容,以便它接受该符号

在其前面添加一个反斜杠,如下所示:

"Baby\'s world"
您可以使用以下命令在字符串中查找并替换它们:

str.Replace('\'', '\\\'')
我对最后一部分不是100%确定,但您需要通过在前面添加\来“转义”和。因此,它似乎没问题(无法测试,因为我不是C#程序员。

插入表(字段)值('baby's world')
将失败,因为字符串被截断为
插入表(字段)值('baby'),其余部分被视为无效代码

有两种方法可以阻止这种情况发生,第二种方法对于良好实践编码是可取的:

插入表(字段)值(“婴儿世界”)


插入表(字段)变量(“婴儿的世界”)

由于您询问的是Visual Studio(.NET),因此需要使用参数化查询。在构造查询时不要使用连接

private void PrepareExample()
{
    string s = Console.ReadLine();
    MySqlCommand cmd = new MySqlCommand("INSERT INTO movie(title) VALUES (?title)", myConnection);
    cmd.Parameters.AddWithValue( "?title", "baby's world" );
    cmd.Prepare();
    cmd.ExecuteNonQuery();
}

虽然这不完全是串联,但不要使用:

qry = string.Format("INSERT INTO movie(title) VALUES("{0}", Console.ReadLine());
不过,如果您确实发现需要以这种方式运行SQL,请将单引号替换为反斜杠

qry = string.Format("INSERT INTO movie(title) VALUES("{0}", 
              Console.ReadLine().Replace("'", "\'");

但请考虑使用参数化查询而不是级联或String格式,因为参数化查询会自动处理这些分米符细微差别。


只需使用
mysql\u real\u escape\u string()
。无需执行任何其他操作

例如:

mysql_real_escape_string($user),
mysql_real_escape_string($password));

“我如何处理查询”是什么意思?如果您在字符串的每个“内部”前面添加\则没有问题。我声明我通过查询插入数据,以便在textbox中传递的值和textbox值进入insert query,那么我如何检测任何特殊符号是否进入php中有一个名为addslashes的函数,它可以为您工作。您可以通过谷歌搜索在你选择的语言中是等效的。因为你使用的是c语言。我在答案中添加了它。祝你好运,让我知道它是否有效:)根据Microsoft的说法,.NET没有“addslashes()”函数。你可以试试这个。我也不是c语言程序员:是的。这很好。但是如果
插入表(字段)值(“+name.txt+”),情况会怎样
?其中name.txt的文本为“婴儿世界”
mysql_real_escape_string($user),
mysql_real_escape_string($password));