使用 mySqli 清理数据

Posted

技术标签:

【中文标题】使用 mySqli 清理数据【英文标题】:Sanitizing data with mySqli 【发布时间】:2014-05-21 03:21:46 【问题描述】:

我正在使用 mysqli,我正在尝试在追加/更新数据库之前开发最终的清理功能。

    我想知道这个超级简单的功能是否可以为我完成这项工作。

    function sanitize($me) 
    return mysql_real_escape_string($me);
    
    

    内部 php 命令是否像日期和时间(例如 sanitize(date("F j, Y, g:i a")); 也应该被清理?

【问题讨论】:

【参考方案1】:

如果那个超级简单的功能可以为我完成这项工作。

没有。仅仅因为底层功能与清理完全无关,即使是适当的扩展也是如此。

内部 PHP 命令输出是否也应该被清理?

是的。因为你的 db 相关逻辑应该不知道数据源。它应该知道这些数据正在被查询,因此必须正确格式化。

准备好的陈述是达到目标的唯一途径。所以,你必须摆脱这个功能,开始学习准备好的语句

【讨论】:

【参考方案2】:

无论是用户输入、函数调用的结果还是硬编码数据,都应该进行清理。有一天,您将决定使日期格式动态化,允许用户设置格式字符串,而您会忘记对其进行清理;用户将在格式中添加引号,您的 SQL 将被破坏。

mysql_real_escape_string 不属于mysqli 扩展,使用正确的函数。更好的是,使用 PDO,你不需要函数,只需要参数绑定。

【讨论】:

以上是关于使用 mySqli 清理数据的主要内容,如果未能解决你的问题,请参考以下文章

Airflow使用技巧之-清理元数据库

mySQL数据库数据清理

Zabbix 数据清理

Linux 数据盘和系统盘的查看,空间清理

HDFS数据定期清理

Audit--清理Audit数据