0

方法一

  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;

方法二

  $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有什么区别?行业标准是什么?有什么具体情况我应该使用上述方法吗?哪个更好,为什么?

谢谢

4

1 回答 1

2

方法 1 (M1) 和方法 2 (M2) 都是有效的 Joomla! 2.5 机制,M1 使用半自动化方法,可能更常用于您已经使用对象的地方。

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

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

唯一奇怪的是global在 M1 中使用 a,通常是Joomla!编码标准避免使用全局变量,而是使用 OOP 或工厂模式。所以,像这样:

$database = JFactory::getDBO();

而不是使用global参考。

于 2012-10-24T06:22:47.997 回答