在过去的几天里,我一直在思考一个问题,我需要一些关于如何解决这个问题的建议。
我有一个sql查询,如下所示
mysql_real_escape_string($value);
$sql_first = "SELECT `user_id` FROM `usermeta` WHERE `meta_value` = '".$value."'如果$value不包含像ä ü ö ø这样的字符,它就可以正常工作
数据库的归类为utf8_general_ci
我用php的conv()函数尝试了各种组合,但就是不能正常工作。
我想我必须将$value转换成UTF8--这是不是朝着正确的方向发展?
发布于 2012-05-12 19:53:16
使用准备好的语句,数据库驱动程序将为您完成所有工作,并且您不会受到SQL注入攻击。
请参阅http://php.net/manual/fr/mysqli.prepare.php
发布于 2012-05-12 19:56:34
我建议您尝试使用utf8_unicode_ci排序规则
从this链接:
主要区别是:
utf8_general_ci不支持扩展/连字,它将所有这些字母作为单个字符进行排序,有时还会以错误的顺序排序。
对于所有脚本,
utf8_unicode_ci的缺点是它比utf8_general_ci慢一点。
因此,当您需要更好的排序顺序时-使用utf8_unicode_ci,以及当您对性能非常感兴趣时-使用utf8_general_ci。
https://stackoverflow.com/questions/10563439
复制相似问题