我写了一个关于emysql编码得到正确答案here的问题。 答案找出另一个问题......Erlang Emysql编码与常规编码的区别查询
我试图存储iPhone表情符号插入数据库...
当我这样做:
Query = io_lib:format("UPDATE Users SET c=\"~s\" WHERE id=~B", [C, Id]),
emysql:execute(mydb, Query).
一切正常......
但随着:
emysql:prepare(update_c, <<"UPDATE Users SET c=? WHERE id=?">>),
emysql:execute(mydb, update_c, [C, Id]).
我检索变为乱码。 编辑以使用方法,正确的说法
我与连接:
emysql:add_pool(my_db, 3, "login", "password", "db.mydomain.com", 3306, "MyTable", latin1)
不幸的是,我不能使用,因为使用的数据库和存储的表情符号的这种方式,以前的软件的UTF8,如果我使用它将与新系统一起工作,但不适用于旧系统插入的行。
编辑:
我真的真的想用事先准备好的声明,这将有效地防止SQL注入。
您是否有资格使用“乱码”,例如您是收到Mojibake还是错误? – 2012-03-14 21:42:40
gibberish = Mojibake,是的......但只有用准备好的语句,现在,我正在使用非预处理语句,用mysql_util:encode()来确保没有可能的注入,但我真的想用准备好的声明。 – TheSquad 2012-03-14 23:21:19