gpt4 book ai didi

php - 在 fuelphp 中查询数据库的更好方法是什么?

转载 作者:行者123 更新时间:2023-12-02 22:32:37 25 4
gpt4 key购买 nike

我有列表要求选择查询数据库

  1. 安全
  2. 灵 active

这是fuelphp中的查询函数数据库

  1. ORM (Object Relational Mapper)

  2. DB Class (Direct Query)

  3. Query Bulding

我的问题

  1. 当我使用 ORM Mapper 时,我遇到了关于flexible 点的问题。我读过 thisthis这说 ORM 不能按表的字段选择,ORM 可以获取表中的所有列,如果连接表将传递大量数据,但 ORM 是高安全性的,我现在不快,也许有人可以解释,但我认为会很慢,因为 ORM 获取所有数据,这只是我的意见。

  2. 当我使用 Direct Query 时,我遇到了安全问题,因为可能存在 SQL 注入(inject),但是使用 Direct Query 我们可以自定义查询数据库,我认为速度会比 ORM 提高。

    <
  3. 当我使用查询构建时,当我想连接两个或更多表时遇到问题,这个功能在 fuelphp 中仍然不可用,但是查询构建器的安全性比直接查询更好,而且速度会提高我想。

好吧,这只是我的意见,实际上我想使用 ORM,因为我比其他人更喜欢安全性,我认为这非常重要。

我的问题

  1. 你对这个问题有什么建议?

最佳答案

  1. 是的,ORM 本质上通常会稍微慢一些。但是,就像您说的那样,灵 active 可能是性能牺牲的来源。 ORM 有它的用途,并且对某些场景有益,这些场景在整个网络上都有更详细的记录,包括在您提出问题的链接上,因此我将对好处和陷阱进行详细描述。

  2. 直接查询可能容易受到 SQL 注入(inject)的影响,但您可以避开它们并自行确保它们的安全。作为一个基本示例(如下),您可以将以下内容传递给 DB 类。在 ORM 和查询构建器无法生成您需要的 SQL 的情况下,直接查询非常有用。但是,使用直接查询意味着您不一定能够切换到不同的数据库引擎(例如 MySQL 到 Mongo),而您可以使用 ORM 或查询构建器。出于这个原因,我个人远离直接查询。

    $query = sprintf("SELECT * FROM table WHERE name = '%s'", DB::escape($yourstring));

  3. 查询构建器非常适合完成 ORM 模型无法完成的查询,或者在编写模型过于复杂的情况下完成查询。从中编译 SQL 会产生轻微的开销,但通常可以忽略不计。查询生成器能够连接无限数量的表。您只需要多次调用 join()on() 函数。例如

    DB::select('*')->from('table')

    ->join('table2', 'right')->on('table2.column', '=', 'table.column')

    ->join('table3', 'right')->on('table3.column', '=', 'table.column')

您还可以根据需要多次调用 on()

如上所述,每个选项将适用于不同的场景。所以你会发现,在你需要的时候选择最合适的选项将是你最好的选择。

关于php - 在 fuelphp 中查询数据库的更好方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11981082/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com