CI中使用哪种数据库访问方法?

时间:2013-01-25 04:42:35

标签: php database codeigniter

我听说过(感谢SO)mysql_ *系列函数容易受到SQL注入攻击,所以总是建议使用 mysqli_ *或PDO方法。

所以,我试图找出在Codeigniter中使用了哪些方法,因为我从4个月以来一直在使用CI。但我无法理解。

有人能告诉我CI中使用了哪些或其他方法?

提前致谢。

1 个答案:

答案 0 :(得分:7)

CodeIgniter根据您的config/database.php文件使用您选择的任何方法。例如,如果您选择mysqli作为驱动程序,则会使用mysqli系列函数。如果您选择mysql,则会使用mysql系列,依此类推。

有一个PDO驱动程序,但它不是当前版本中世界上最稳定的东西。

如果您正在使用CodeIgniter中的“活动记录”功能(实际上应该称之为“查询构建器”功能,因为它们不遵循“活动记录”模式),那么您的所有数据都会自动清理。适当的功能。例如,如果您说$this->db->where('field', $value),并且您正在使用mysqli驱动程序,则CodeIgniter会自动调用您传递给它的mysqli_real_escape_string输入上的$value,查询安全。

我还应该注意,这种自动清理仅适用于活动记录助手功能,如$this->db->get等。如果您尝试使用$this->db->query("SELECT * FROM table WHERE field = '" . $field . "'")运行自己的查询,那么您需要注意保护自己,因为您绕过了CodeIgniter的安全机制。使用query()方法直接运行查询就像是说“别担心,我知道我在做什么”。您需要通过调用$this->db->escape()或其相关函数专门要求CodeIgniter为您清理某些值。如果你只是将变量连接到你的查询中,那么你将打开自己的SQL注入。