繁体   English   中英

如何在 mysql varchar 数据类型列中添加 'like 特殊字符?

[英]how to add ' like special characters in mysql varchar data type column?

我正在尝试通过查询将字符串作为“婴儿的世界”插入到 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'并且 rest 被视为无效代码。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM