我有一个捕捉<input type="text">和<textarea>元素的web表单。后端技术是PHP和MySQL。
数据库、表和列排序规则都是utf8_general_ci
stripslashes($_POST['text_input'])
SET text_storage = "mysql_real_escape_string($_POST['text_input'])"我看到数据库中的不可读字符是特殊字符(如单撇号和双引号等)通过web表单出现变化的结果。
什么是确保DB表中干净和可读数据的最佳编码实践--每一步?为了捕获和存储干净的数据,我还需要一个特定的<doctype>或<meta http-equiv="Content-Type" ... />吗?
感谢您帮助我构建一个用于清洁数据捕获和存储的最佳实践模板。
发布于 2012-02-27 12:58:19
在实际从数据库中获取记录之前,尝试执行以下查询:
mysql_query("SET NAMES 'utf8'");
mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'");然后继续执行您的查询。以上查询,当然,必须位于当前数据库连接的上下文中。
filter_var()和filter_var_array()等内置PHP函数可以轻松地对输入数据进行清理,但是mysql_real_escape_string()也是一个很好的解决方案。您的HTML文档必须在标记中有正确的编码:<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
mysql_real_escape_string()转义unescaped_string中的特殊字符,同时考虑到连接的当前字符集,以便将其放置在mysql_query()中是安全的。如果要插入二进制数据,则必须使用此函数。函数调用MySQL的库函数mysql_real_escape_string,该函数将反斜杠添加到以下字符:\x00, \n, \r, \, ', " and \x1a。
https://stackoverflow.com/questions/9465240
复制相似问题