[英]Joomla db->query. What is the difference between quote types when filling query object
我在Joomla 3.x下工作
構建查詢對象有許多不同的解決方案。
最近的文檔似乎更喜歡這種方法:
$query->select("*")
$query->from($db->nameQuote('#__example_table'))
$query->where($db->nameQuote('id')." = ".$db->quote('999999'));
在類似的頁面中有一些名為“完全引用”的exapmles:
$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'
)。
這就是原因
就報價類型之間的區別而言,在SQL驅動程序中,反引號和單引號之間通常存在差異, $db->quote()
為您提供單引號, $db->quoteName()
為您提供反引號。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.