首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Web表单到数据库存储的端到端过程的最佳实践

问Web表单到数据库存储的端到端过程的最佳实践
EN

Stack Overflow用户
提问于 2012-02-27 12:45:24
回答 1查看 198关注 0票数 0

我有一个捕捉<input type="text">和<textarea>元素的web表单。后端技术是PHP和MySQL。

数据库、表和列排序规则都是utf8_general_ci

  • the传入的表单数据,使用stripslashes($_POST['text_input'])

  • the INSERT INSERT查询语句进行清理,看起来像SET text_storage = "mysql_real_escape_string($_POST['text_input'])"

我看到数据库中的不可读字符是特殊字符(如单撇号和双引号等)通过web表单出现变化的结果。

什么是确保DB表中干净和可读数据的最佳编码实践--每一步?为了捕获和存储干净的数据,我还需要一个特定的<doctype>或<meta http-equiv="Content-Type" ... />吗?

感谢您帮助我构建一个用于清洁数据捕获和存储的最佳实践模板。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-27 12:58:19

在实际从数据库中获取记录之前,尝试执行以下查询:

代码语言:javascript
复制
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。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9465240

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档