使用PHP mcrypt插入时查询失败

时间:2014-02-16 20:46:02

标签: php mysql encoding mcrypt

我的头靠在墙上。但我使用utf8_general_ci编码,tinyblob

中的类型为MySQL DB

我在行uname,pwrod和email上使用Mcrypt,如插图所示。有时这会插入,有些则不会。这显然取决于用于生成加密的字符串。

这是我的插入

INSERT INTO `users` ( `uname` , `pword` , `email` , `gender` , `provider` , `level` , `dob` , `confirmed` , `regdate` , `confirmationCode`, `ip` ) 
VALUES ('“­É.¡Ec', '$2a$15$3G.7Pfap0dfWnEZxVPKWjewcLUA6tYm7a1al6I0QNZUCNcdl6E6Mu', 'ðÖŒÅÕ'Ý£mY]ª±¼ ôn´}Ð>d¢', '0','manual', '0', '2014-02-16', '0',NOW(), 'f5ab855e95eab47948b05cfe5a03e4d6', '127.0.0.1' ); 
Error Nr: 1064 Error Msg: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Ý£mY]??? ?n?}?>d?', '0','manual', '0', '2014-02-16', '0',NOW(), 'f5ab855e95eab' at line 14 

如果我将'更改为`,则会出现以下错误:

 Error Nr: 1300 Error Msg: Invalid utf8 character string: '\x93\xAD\xC9.\xA1E\x04c'

我认为我需要更改char encoding?但这是我的知识落空的地方(并且通常只是所有编码:))

1 个答案:

答案 0 :(得分:2)

您遇到SQL injection attack漏洞:

  [..snip..], 'ðÖŒÅÕ'Ý£mY]ª±¼ ôn´}Ð>d¢',[..snip..]
              ^--start string
                    ^---end string

您正在错误地构建查询 - 通过将您的数据转义为查询字符串,或者不使用数据库库的预准备语句/占位符功能。