如何在mysql varchar数据类型列中添加’喜欢特殊字符?

我试图通过查询将字符串作为“婴儿的世界”插入varchar类型的列,但显示错误。 还有什么我需要放入查询,以便它接受该符号

像这样在它前面放一个反斜杠:

"Baby\'s world" 

您可以使用以下命令在字符串中查找并替换它们:

 str.Replace('\'', '\\\'') 

我对这最后一部分并不是100%肯定,但是你需要通过在它前面添加一个来“逃避”’和\’。 所以它似乎没问题(不能测试,因为我不是C#程序员。

由于您询问的是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(); } 

要么

 private void PrepareExample() { MySqlCommand cmd = new MySqlCommand("INSERT INTO movie(title) VALUES (?title)", myConnection); // try to input: baby's world. or try: baby"s world. everything are ok :-) cmd.Parameters.AddWithValue( "?title", Console.ReadLine() ); 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.Format,因为参数化查询会自动处理那些分隔符的细微差别。

http://dev.mysql.com/doc/refman/5.0/es/connector-net-examples-mysqlcommand.html

只需使用mysql_real_escape_string() 。 没有必要做任何其他事情。

例如:

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

INSERT INTO table (field) VALUES ('baby's world')将失败,因为字符串被截断为INSERT INTO table (field) VALUES ('baby' ,其余部分被视为无效代码。

有两种方法可以阻止这种情况,第二种方法可以用于良好实践编码:

INSERT INTO table (field) VALUES ("baby's world")

INSERT INTO table (field) VAUES ('baby\'s world')