我的学习模式转义字符串

如何过滤来自 URL 参数示例本地主机的输入:8080/v1/data/:id


而且我想在Golang中使用像参数这样的过滤器,我不能使用,因为这个过滤器是动态的,这个参数可以使用或否,就像这个例子mysql_real_escape_string?


if status != "99" {

    where = append(where, "vs.stats = '1'")

}


if cari != "" {

    where = append(where, "(lm.title_member like '%"+cari+"%' OR " +

    "lm.nama_member like '%"+cari+"%' )")

}


query := "select vs.*, lm.nama_member from volks_shift vs left join list_member lm on vs.id_m=lm.id_m where vs.id_s=?"


rows, err := s.DB.QueryContext(ctx, query, id_s)

我想要安全的卡里瓦尔,没有使用?


胡说叔叔
浏览 106回答 1
1回答

犯罪嫌疑人X

包中没有转义函数,请参阅相关问题#18478(并且在使用数据库抽象层时调用mysql特定的函数也不好)。database/sql但它也不是必需的,因为您仍然可以在动态查询中使用。只需将查询参数与查询一起动态构建,如下所示:?    query := "SELECT vs.*, lm.nama_member" +        " FROM volks_shift vs LEFT JOIN list_member lm ON vs.id_m=lm.id_m" +        " WHERE vs.id_s=?"    params := []interface{}{id_s}    if status != "99" {        query += " AND vs.stats = '1'"    }    if cari != "" {        query += " AND (lm.title_member LIKE ? OR lm.nama_member LIKE ?)"        params = append(params, "%"+cari+"%", "%"+cari+"%")    }    rows, err := s.DB.QueryContext(ctx, query, params...)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go