asp.net - 从 asp.net 执行 MySql 查询

标签 asp.net mysql

为什么这个命令不能正常执行:

    using (MySqlCommand myCommand = new MySqlCommand("Update jobs SET poster_email = '@1', url = '@2' WHERE company = '@3'; ", myConn))
    {
        myCommand.Parameters.AddWithValue("@1", email);
        myCommand.Parameters.AddWithValue("@2", url);
        myCommand.Parameters.AddWithValue("@3", company);
        myConn.Open();
        myCommand.ExecuteNonQuery();
    }

但是当我用实际值替换 @3 时,它起作用了:

using (MySqlCommand myCommand = new MySqlCommand("Update jobs SET poster_email = '@1', url = '@2' WHERE company = 'MyCompany'; ", myConn))
{
    myCommand.Parameters.AddWithValue("@1", email);
    myCommand.Parameters.AddWithValue("@2", url);

    myConn.Open();
    myCommand.ExecuteNonQuery();
}

为 company 变量传入的值与第二个示例中硬编码的值相同。我已经逐步使用调试器来确保将 company 变量添加为参数并且它是我期望的值。 IE。没有空格和 trim()

知道我做错了什么吗?

更新:

这也行,但我不得不担心 Sql 注入(inject)...

    string myQuery = string.Format("Update jobs SET poster_email = '{0}', url = '{1}' WHERE company = '{2}'; ", email, url, company);

    using (MySqlCommand myCommand = new MySqlCommand(myQuery, myConn))
    {
        myConn.Open();
        myCommand.ExecuteNonQuery();
    }

最佳答案

我相信对于 MySQL 命令你想使用“?”而不是“@”:

using (MySqlCommand myCommand = new MySqlCommand("Update jobs SET poster_email = '?1', url = '?2' WHERE company = '?3'; ", myConn))
{
    myCommand.Parameters.AddWithValue("?1", email);
    myCommand.Parameters.AddWithValue("?2", url);
    myCommand.Parameters.AddWithValue("?3", company);
    myConn.Open();
    myCommand.ExecuteNonQuery();
}

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

关于asp.net - 从 asp.net 执行 MySql 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5080898/

相关文章:

c# - Asp.net 链接 onRowCommand 不工作

php - Mysqli IN 获取重复结果

php - 如何在AJAX聊天中添加更多 channel ?

php - php/mysql 查询的计数和求和

php - 我想开发一个制作 vAnimated 视频的应用程序如何进行?

c# - 如何为下面的 json 对象创建 c# 类?

c# - IIS 10.0 最大请求长度 .NET MVC

c# - 从 SQL 插入查询中获取新记录主键 ID 以将相同的值插入另一个表?

MySql查询找到最低高

mysql - 以特定格式显示数据时遇到问题