joomla 2.5 查询 select 从一个 table 插入另一个

joomla 2.5 query select from one table insert into another

使用 joomla 插件我试图从 '#__users' table 中获取一些用户信息并将该信息插入另一个 table '#__new_table ' 创建用户时。

代码如下

function onUserAfterSave( $user, $isnew, $success, $msg ) {
    if ($isnew && $success) {
      $db = &JFactory::getDBO();
      $db->setQuery( 'INSERT INTO #__new_table (user_id) VALUES ('.$user['id'].')' );
      $db->query();
    }
  }

以上有效,'id' 被复制到新的 table 并显示在 'user_id' 行中。但是,如果我尝试以下操作:

function onUserAfterSave( $user, $isnew, $success, $msg ) {
    if ($isnew && $success) {
      $db = &JFactory::getDBO();
      $db->setQuery( 'INSERT INTO #__new_table (name) VALUES ('.$user['username'].')' );
      $db->query();
    }
  }

即使 'name' 和 'username' 字段存在于两个 table 中,这也不起作用。

有没有更好的方法为 joomla 2.5 编写此函数。同样在上面的示例中,我一次只获取一个值。如果我试图一次从“#__users”中获取一些值以插入到“#__new_table”中的几个字段中..我将如何更改上述功能。

谢谢。

调试此问题的最简单方法是打印第二个示例中的查询并将其粘贴到 phpMyAdmin 中,看看它会抛出什么样的错误。我的猜测是第二个 table 中的 id 字段不能为空,但您没有在第二个示例中添加它。

您应该 quote 用户名值。

function onUserAfterSave( $user, $isnew, $success, $msg ) {
    if ($isnew && $success) {
      $db = &JFactory::getDBO();
      $db->setQuery( 'INSERT INTO #__new_table (name) VALUES ('.$db->quote($user['username']).')' );
      $db->query();
    }
  }