Php Web表单到数据库存储的端到端过程的最佳实践
我有一个web表单,可以捕获Php Web表单到数据库存储的端到端过程的最佳实践,php,mysql,database,Php,Mysql,Database,我有一个web表单,可以捕获和元素。后端技术是PHP和MySQL MySQL数据库、表和列排序规则都是utf8\u general\u ci 传入的表单数据用stripslashes($\u POST['text\u input'])清理。 INSERT INTO查询语句类似于SET text\u storage=“mysql\u real\u escape\u string($\u POST['text\u input'])” 我在数据库中看到无法读取的字符,这是由于web表单中出现了特殊
和
元素。后端技术是PHP和MySQL
- MySQL数据库、表和列排序规则都是
utf8\u general\u ci
- 传入的表单数据用
stripslashes($\u POST['text\u input'])清理。
- INSERT INTO查询语句类似于
SET text\u storage=“mysql\u real\u escape\u string($\u POST['text\u input'])”
或
来捕获和存储干净的数据
感谢您帮助我构建用于干净数据捕获和存储的最佳实践模板。在从数据库实际提取记录之前,请尝试执行以下查询:
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'");
然后继续执行查询。当然,上述查询必须位于当前数据库连接的上下文中
可以使用内置PHP函数轻松清理输入数据,如filter\u var()
和filter\u var\u array()
,但是mysql\u real\u escape\u string()
也是一个很好的解决方案。
您的HTML文档必须在标记中使用正确的编码:
mysql\u real\u escape\u string()。如果要插入二进制数据,则必须使用此函数。该函数调用MySQL的库函数MySQL\u real\u escape\u string
,该函数在反斜杠前面加上以下字符:\x00、\n、\r、\、',“而且\x1a
好的@budiony,我会补充这一点。但是,如果我的数据库/表/列都设置为排序规则utf8,那么您的两个预查询的意义是什么?相信我,它对返回的结果集有重大影响。这件事困扰了我很长时间,直到每次查询前我都在运行时手动更改了这些参数。谢谢@budioy。我实现了你的查询,他们把一切都清理干净了。令人惊叹的!