- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有列表要求选择查询数据库
这是fuelphp中的查询函数数据库
我的问题
当我使用 ORM Mapper 时,我遇到了关于flexible 点的问题。我读过 this和 this这说 ORM 不能按表的字段选择,ORM 可以获取表中的所有列,如果连接表将传递大量数据,但 ORM 是高安全性的,我现在不快,也许有人可以解释,但我认为会很慢,因为 ORM 获取所有数据,这只是我的意见。
当我使用 Direct Query 时,我遇到了安全问题,因为可能存在 SQL 注入(inject),但是使用 Direct Query 我们可以自定义查询数据库,我认为速度会比 ORM 提高。
<当我使用查询构建时,当我想连接两个或更多表时遇到问题,这个功能在 fuelphp 中仍然不可用,但是查询构建器的安全性比直接查询更好,而且速度会提高我想。
好吧,这只是我的意见,实际上我想使用 ORM,因为我比其他人更喜欢安全性,我认为这非常重要。
我的问题
最佳答案
是的,ORM 本质上通常会稍微慢一些。但是,就像您说的那样,灵 active 可能是性能牺牲的来源。 ORM 有它的用途,并且对某些场景有益,这些场景在整个网络上都有更详细的记录,包括在您提出问题的链接上,因此我将对好处和陷阱进行详细描述。
直接查询可能容易受到 SQL 注入(inject)的影响,但您可以避开它们并自行确保它们的安全。作为一个基本示例(如下),您可以将以下内容传递给 DB 类。在 ORM 和查询构建器无法生成您需要的 SQL 的情况下,直接查询非常有用。但是,使用直接查询意味着您不一定能够切换到不同的数据库引擎(例如 MySQL 到 Mongo),而您可以使用 ORM 或查询构建器。出于这个原因,我个人远离直接查询。
$query = sprintf("SELECT * FROM table WHERE name = '%s'", DB::escape($yourstring));
查询构建器非常适合完成 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/
我想了解 Ruby 方法 methods() 是如何工作的。 我尝试使用“ruby 方法”在 Google 上搜索,但这不是我需要的。 我也看过 ruby-doc.org,但我没有找到这种方法。
Test 方法 对指定的字符串执行一个正则表达式搜索,并返回一个 Boolean 值指示是否找到匹配的模式。 object.Test(string) 参数 object 必选项。总是一个
Replace 方法 替换在正则表达式查找中找到的文本。 object.Replace(string1, string2) 参数 object 必选项。总是一个 RegExp 对象的名称。
Raise 方法 生成运行时错误 object.Raise(number, source, description, helpfile, helpcontext) 参数 object 应为
Execute 方法 对指定的字符串执行正则表达式搜索。 object.Execute(string) 参数 object 必选项。总是一个 RegExp 对象的名称。 string
Clear 方法 清除 Err 对象的所有属性设置。 object.Clear object 应为 Err 对象的名称。 说明 在错误处理后,使用 Clear 显式地清除 Err 对象。此
CopyFile 方法 将一个或多个文件从某位置复制到另一位置。 object.CopyFile source, destination[, overwrite] 参数 object 必选
Copy 方法 将指定的文件或文件夹从某位置复制到另一位置。 object.Copy destination[, overwrite] 参数 object 必选项。应为 File 或 F
Close 方法 关闭打开的 TextStream 文件。 object.Close object 应为 TextStream 对象的名称。 说明 下面例子举例说明如何使用 Close 方
BuildPath 方法 向现有路径后添加名称。 object.BuildPath(path, name) 参数 object 必选项。应为 FileSystemObject 对象的名称
GetFolder 方法 返回与指定的路径中某文件夹相应的 Folder 对象。 object.GetFolder(folderspec) 参数 object 必选项。应为 FileSy
GetFileName 方法 返回指定路径(不是指定驱动器路径部分)的最后一个文件或文件夹。 object.GetFileName(pathspec) 参数 object 必选项。应为
GetFile 方法 返回与指定路径中某文件相应的 File 对象。 object.GetFile(filespec) 参数 object 必选项。应为 FileSystemObject
GetExtensionName 方法 返回字符串,该字符串包含路径最后一个组成部分的扩展名。 object.GetExtensionName(path) 参数 object 必选项。应
GetDriveName 方法 返回包含指定路径中驱动器名的字符串。 object.GetDriveName(path) 参数 object 必选项。应为 FileSystemObjec
GetDrive 方法 返回与指定的路径中驱动器相对应的 Drive 对象。 object.GetDrive drivespec 参数 object 必选项。应为 FileSystemO
GetBaseName 方法 返回字符串,其中包含文件的基本名 (不带扩展名), 或者提供的路径说明中的文件夹。 object.GetBaseName(path) 参数 object 必
GetAbsolutePathName 方法 从提供的指定路径中返回完整且含义明确的路径。 object.GetAbsolutePathName(pathspec) 参数 object
FolderExists 方法 如果指定的文件夹存在,则返回 True;否则返回 False。 object.FolderExists(folderspec) 参数 object 必选项
FileExists 方法 如果指定的文件存在返回 True;否则返回 False。 object.FileExists(filespec) 参数 object 必选项。应为 FileS
我是一名优秀的程序员,十分优秀!