SQL语句不过滤行

时间:2017-02-22 23:40:10

标签: c# mysql sql

以下代码传递此行。最后一列名为toscode。我正在尝试清除名称中toscolumn包含“W1”的行。没有列被设置为索引。不起作用。

我读到$前面的W1(转义)是为了防止SQL注入。不确定%做了什么,但它可能与索引有关,这可能是它无效的原因。

| SPX    |   0 |    8.3 |    8.7 | 2017-03-24 |               0 |   30 | PUT |   2400 | SPXW170324C02400000 | .SPXW1703242400 |

MySqlCommand cmd = conn.CreateCommand();
cmd.Parameters.AddWithValue("@symbol", symbol);
cmd.CommandText = @"select * 
                    from contractdetails 
                    where symbol = @symbol 
                       && toscode NOT LIKE '%$W1%'
                       && Type = 'PUT' 
                       && oBid > .09 
                       && not ITM  
                       && Days > 10 
                       && Days < 120 
                    order by Days asc";

1 个答案:

答案 0 :(得分:2)

你的LIKE条款应为:

toscode NOT LIKE '%W1%'

删除'$'-it不属于LIKE子句中的任何含义。如果它是用户提供的输入,您只需要担心SQL注入,在您的示例中并非如此。

'%'字符是通配符,因此搜索中的任何内容都可能位于“W1”之前或之后