CI 中使用了哪个数据库访问 aproach


Which database access aproach is used in CI?

我听说(感谢SO)mysql_*系列函数容易受到SQL注入的影响,因此始终建议使用mysqli_*或PDO方法。

因此,我试图找出Codeigniter中使用的这些方法中的哪一种,因为我已经使用CI4个月了。但我无法把它拿出来。

谁能告诉我CI中使用了哪种或任何其他方法?

提前谢谢。

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() 方法运行查询就像说"别担心,我知道我在做什么"。您需要专门要求 CodeIgniter 通过调用 $this->db->escape() 或其相关函数来为您清理某些值。如果您只是将变量连接到查询中,那么您将向SQL注入开放。