导致mysql错误的mcrypt字符


mcrypt characters causing mysql errors

我在获取php的mcrypt函数以存储在mysql数据库中的方式加密文本时遇到了问题。

下面是一个不起作用的查询示例:

UPDATE mydatabase.clients SET firstname='''å»”é¶Q' WHERE id_client=65

但如果我把它改成:

UPDATE mydatabase.clients SET firstname='Test' WHERE id_client=65

然后它就起作用了。所以肯定是那些疯狂的mcrypt字符把东西扔掉了。

我该如何处理我的mysql数据库,使其接受这些字符?

密码的输出是一个字节字符串,而不是字符。您不应该将密文直接存储为文本。使用"二进制"数据类型,或者使用类似Base-64的方法将字节字符串转换为文本。

将列类型改为二进制,这可能会起作用。

确保您正在转义加密的字符串。这是做好这件事的重要组成部分!

我一直在使用MySQL和Mcrypt,我将加密的数据和初始化向量存储为二进制,并在将它们放入查询之前对所有这些字符串进行转义。工作起来很有魅力。