2015-02-17 95 views
0

使用joomla插件我想从'#__users'表中获取一些用户信息,并在创建用户时将该信息插入另一个表'#__new_table'。joomla 2.5查询select从一张表插入另一张表

的代码如下

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

那么即使领域的“名称”和“用户名”两表中存在这不起作用。

有没有更好的方法来编写这个函数的joomla 2.5。同样在上面的例子中,我只是一次抓取一个值。如果我试图从'#__用户'一次性获取一些值以插入'#__new_table'中的几个字段,我将如何更改上述函数。

谢谢。

回答

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(); 
    } 
    } 
+0

感谢使用'$ db-> quote'',并且我得到了它的工作! – nrider 2015-02-18 21:01:42

0

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

+0

感谢您的调试提示,但解决方案Irfan给了工作。真的很喜欢你的信息joomla网站btw! – nrider 2015-02-18 21:04:20