我主要使用Php 5.4+ 和 MySql 5.5+ 版本。我在所有项目中都使用Codeigniter。
我面临的问题是
有时(在某些生产服务器上)当 POST 变量包含 ' 或
虽然 php 和 CI 有一个很好的工具来处理这些带有addlashes和mysql_escape_sequence等的字符串
为用户发布的每个可能的变量检查这些条件并不容易
每次我们必须使用addslashes Ex: It\'s 并且在给出输出时我们必须再次应用stripslashes 来输出It's。但是对于较大的值很难处理。
由于数据库将数据保存为它,因此很难搜索这些字符串。
经过几天的挣扎,我发现使用utf8mb4_general_ci优于utf8
因此,我确保 CI 的 Database.php 具有以下内容
$db['default']['char_set'] = 'utf8mb4';
$db['default']['dbcollat'] = 'utf8mb4_unicode_ci';
我还将各个列的数据类型更改为“ LONGTEXT ”,并将其排序规则更改为“ utf8mb4_general_ci ”
令我惊讶的是,他们为一些服务器工作。
但仍然在某些服务器上,我发现了同样的问题。即使我确保服务器配置与那些工作服务器匹配,这也有点令人沮丧。
所有 php 和 mysql 开发人员如何使用此场景?你采取了哪些预防措施?
请推荐!!