Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.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
在fuelphp中查询数据库的更好方法是什么?_Php_Orm_Fuelphp - Fatal编程技术网

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

在fuelphp中查询数据库的更好方法是什么?,php,orm,fuelphp,Php,Orm,Fuelphp,我需要选择查询数据库的列表 保安 灵活性 快速 这是fuelphp中的查询函数数据库 我的问题 当我使用ORM映射器时,我对灵活的点有问题。我读过,上面说ORM不能按表的字段进行选择,ORM可以获取表中的所有列,如果联接表中有很多数据被传递,但ORM是高安全性的,我现在不知道是否快,也许有人可以解释,但我认为会很慢,因为ORM获取所有数据,这只是我的观点 当我使用直接查询时,我在安全性方面遇到了问题,因为SQL注入是可能的,但是使用直接查询我们可以自定义查询数据库&我认为速度会比ORM更快

我需要选择查询数据库的列表

  • 保安
  • 灵活性
  • 快速
  • 这是fuelphp中的查询函数数据库

  • 我的问题

  • 当我使用ORM映射器时,我对灵活的点有问题。我读过,上面说ORM不能按表的字段进行选择,ORM可以获取表中的所有列,如果联接表中有很多数据被传递,但ORM是高安全性的,我现在不知道是否快,也许有人可以解释,但我认为会很慢,因为ORM获取所有数据,这只是我的观点

  • 当我使用直接查询时,我在安全性方面遇到了问题,因为SQL注入是可能的,但是使用直接查询我们可以自定义查询数据库&我认为速度会比ORM更快

  • 当我使用查询构建时,当我想要连接两个或更多表时,我遇到了问题,这个函数在fuelphp中仍然不可用,但使用查询构建器时,安全性优于直接查询&我认为速度会提高

  • 好的,这只是我的观点,实际上我想使用ORM,因为我更喜欢安全性,我认为这非常重要

    我的问题

  • 你对这个问题有什么建议
  • 是的,ORM通常会稍微慢一点。然而,正如您所说,它的灵活性是性能牺牲的来源。ORM有它的用途,并且对于某些场景是有益的,这些场景在整个web上都有更详细的记录,包括在您提出问题的链接上,所以我将留下一个关于优点和缺点的详细描述

  • 直接查询可能容易受到SQL注入的影响,但您可以逃避它们并使它们安全。作为一个基本示例(如下),您可以将以下内容传递给DB类。在ORM和查询生成器无法生成所需SQL的情况下,直接查询很好。然而,使用直接查询意味着您不一定能够切换到不同的数据库引擎(例如MySQL到Mongo),在这里您可以使用ORM或查询生成器。出于这个原因,我个人不会直接询问

    $query=sprintf(“从表中选择*,其中名称='%s',DB::escape($yourstring))

  • 查询生成器适用于完成ORM模型无法完成的查询或编写模型过于繁琐的查询。从中编译SQL的开销很小,但通常可以忽略不计。查询生成器能够连接无限数量的表。只需多次调用
    join()
    on()
    函数。比如说

    DB::从('table')中选择('*')->

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

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

  • 您还可以根据需要对()上的
    on
    进行任意多的调用

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