joomla 2.5查询从一个表中选择插入到另一个表中

时间:2015-02-17 23:37:18

标签: mysql joomla

使用joomla插件我试图从'#__users'表中获取一些用户信息,并在创建用户时将该信息插入另一个表'#__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'被复制到新表并显示在'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',这也不起作用。

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

感谢。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

您应该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();
    }
  }