Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Web表单到数据库存储的端到端过程的最佳实践_Php_Mysql_Database - Fatal编程技术网

Php 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表单中出现了特殊

我有一个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表单中出现了特殊字符的变化,如单撇号和双引号等

为了确保数据库表中的数据干净易读,最好的编码实践是什么?我是否需要某种
来捕获和存储干净的数据


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

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

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。我实现了你的查询,他们把一切都清理干净了。令人惊叹的!