使用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'中的几个字段..我将如何更改上述功能。
感谢。
答案 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();
}
}