from($db->nameQuote(-6ren">
gpt4 book ai didi

php - Joomla 数据库-> 查询。填充查询对象时报价类型之间有什么区别

转载 作者:可可西里 更新时间:2023-11-01 08:05:54 26 4
gpt4 key购买 nike

我在 Joomla 3.x 下工作

构建查询对象有许多不同的解决方案。

最近的文档似乎更喜欢这种方法:

$query->select("*")
$query->from($db->nameQuote('#__example_table'))
$query->where($db->nameQuote('id')." = ".$db->quote('999999'));

在类似的页面中有一些名为“完全引用”的例子:

$query = "
SELECT *
FROM ".$db->nameQuote('#__example_table')."
WHERE ".$db->nameQuote('id')." = ".$db->quote('999999').";
";

直接的方法:

$query = " SELECT * 
FROM #__example_table
WHERE 'id' = '999999';
";

这些方法有什么区别?

什么时候,其中一个不行,但其他方法可以执行成功?

最佳答案

只要您坚持 SQL 的那些方面,驱动程序与驱动程序之间没有区别,或者不关心多支持,所有这些方法都可以使用。

但是请注意,您的三个示例并不等同,因为您在前两个示例中将 999999 视为字符串,在最后一个示例中将其视为整数。

一般来说,如果您非常关心多数据库支持,或者如果您希望确保您的查询不会因为您不小心使用保留字作为字段名称并且没有正确引用它而崩溃,那么第一个示例是最好的(可能根据您的意思是 9999999 还是 '999999' 进行修改)。

这是为什么

  • 所有名称都是带有正确标记类型的引号。
  • 事情将被正确转义(除非你说不要)。
  • 所有字符串都被正确引用
  • 它将适用于所有支持的数据库。
  • 当您需要修改该查询时,很容易正确地添加额外的语句,因为 JDatabaseQuery 可以将它们正确地放在一起,无论您将语句放在什么顺序。

关于引号类型之间的区别,在 SQL 驱动程序中通常有反引号和单引号之间的区别,$db->quote() 给你单引号和 $ db->quoteName() 给你反引号。

关于php - Joomla 数据库-> 查询。填充查询对象时报价类型之间有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22453646/

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