gpt4 book ai didi

php - getQuery(true) 与 stdClass 类数据行插入 - Joomla

转载 作者:行者123 更新时间:2023-11-29 08:43:47 24 4
gpt4 key购买 nike

方法一

  global $database;
$user = new stdClass;
$user->id = NULL;
$user->name = $name;
$user->username = $username;

if (!$database->insertObject( '#__users', $user, 'id' )) {
echo $database->stderr();
return false;
}

return $user->id;

方法2

  $db = JFactory::getDBO();     
$query = $db->getQuery(true);
$query->insert($db->nameQuote('#__users'));
$query->set($db->nameQuote('name').'='.$db->quote($$name).','.
$db->nameQuote('username').'='.$db->quote($username));
$db->setQuery( $query );
$db->query();
$new_id = $db->insertId();

我正在使用 Joomla 并使用上述两个查询,这让我可以完成工作。我的问题是方法1和方法2有什么区别?行业标准是什么?有什么特定情况我应该使用上述方法吗?哪一个更好,为什么?

谢谢

最佳答案

方法 1 (M1) 和方法 2 (M2) 都是有效的 Joomla! 2.5 机制中,M1 使用半自动化方法,并且可能在您已经处理对象的情况下更常用。

M2 显然是一组更具体的步骤,但两者都可以使用 JDatabase 等提供的抽象。等人。将您与数据库服务器隔离。

话虽如此,M1 仅在整个 Joomla! 中的少数地方(字面意思)使用。 2.5 安装(不包括 /libararies/joomla/database/),而 M2 被广泛使用

唯一奇怪的是 M1 中使用了global,通常为 Joomla! coding standards避免使用全局变量,而是使用 OOP 或工厂模式。所以,像这样:

$database = JFactory::getDBO();

而不是使用全局引用。

关于php - getQuery(true) 与 stdClass 类数据行插入 - Joomla,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13043398/

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